如何扫描数组中的空索引,并在 php 中用新值打印它?

how to scan null index in array, and print it with a new value in php?

<?php

function tambah_penumpang($daftar_penumpang, $penumpang_baru){
    if(empty($namaArray)==true){
        $daftar_penumpang[]=$penumpang_baru;
        return $daftar_penumpang;
    }else{
        for($i=0; $i<count($daftar_penumpang); $i++){
            if($daftar_penumpang[$i]== null){
                $daftar_penumpang[$i]=$penumpang_baru;
                return $daftar_penumpang;
            }else{
                $daftar_penumpang[] = $penumpang_baru;
                return $daftar_penumpang;
            }
        }
    }

}
    $daftar_penumpang =["sandhika",null,"carl","keith"];
    print_r(tambah_penumpang($daftar_penumpang,"anggoro"))."<br>"
?>

结果如下:(我希望 null 的索引中包含该 anggoro 名称)

Array ( 
    [0] => sandhika 
    [1] => 
    [2] => carl 
    [3] => keith 
    [4] => anggoro 
)

试试这个函数:

<?php

function tambah_penumpang($daftar_penumpang, $penumpang_baru){
    $datas = [];
    for($i = 0; $i < count($daftar_penumpang); $i++) {
        $item = $daftar_penumpang[$i];
        if($item === null) {
            $item = $penumpang_baru;
        }
        $datas[$i] = $item;
    }

    return $datas;
}

$daftar_penumpang =["sandhika",null,"carl","keith"];
print_r(tambah_penumpang($daftar_penumpang,"anggoro"))."<br>";

由于我不熟悉您的命名约定,我使用 array_walk 做了一个全局示例,如下所示:

$daftar_penumpang =["sandhika",null,"carl","keith"];

array_walk($daftar_penumpang, function($v, $k, $replacement) use (&$daftar_penumpang) {
    if ($v == null) {
        $daftar_penumpang[$k] = $replacement;
    }
}, 'anggoro');

print_r($daftar_penumpang);

实例:https://3v4l.org/vVnSq


你的情况:

$daftar_penumpang =["sandhika",null,"carl","keith"];

function tambah_penumpang($daftar_penumpang, $penumpang_baru) {
    array_walk($daftar_penumpang, function($v, $k, $replacement) use (&$daftar_penumpang) {
        if ($v == null) {
            $daftar_penumpang[$k] = $replacement;
        }
    }, $penumpang_baru);

    return $daftar_penumpang;
}


print_r(tambah_penumpang($daftar_penumpang, 'anggoro'));

这将输出:

Array ( [0] => sandhika [1] => anggoro [2] => carl [3] => keith )

更新

使用 for 循环:

你的代码问题是你永远不会进入 for 循环,因为它处于 else 条件,而 $namaArray 总是空的,所以你永远不会经历循环,所以我删除了这个检查并准备了这个循环来向您展示如何使用 for loop

替换空值
function tambah_penumpang($daftar_penumpang, $penumpang_baru)
{
    $tmpArray = [];
    for ($i=0; $i < count($daftar_penumpang); $i++) {
        if ($daftar_penumpang[$i]== null) {
            $tmpArray[$i] = $penumpang_baru;
        } else {
            $tmpArray[] = $daftar_penumpang[$i];
        }
    }
    return $tmpArray;
}

$daftar_penumpang =["sandhika",null,"carl","keith"];
print_r(tambah_penumpang($daftar_penumpang,"anggoro"));