【问题标题】:how to scan null index in array, and print it with a new value in php?如何扫描数组中的空索引,并在php中用新值打印?
【发布时间】:2017-08-14 16:50:25
【问题描述】:
<?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 arrays loops variables conditional


【解决方案1】:

由于我不熟悉您的命名约定,我使用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 循环替换空值

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"));

【讨论】:

  • 我的教授告诉我使用UDF函数,我可以将你的代码替换为我的函数体吗?
  • 告诉他 php 提供了一些很酷的新特性,比如 array_walk
  • 但是,您的代码返回新值而不是替换,因为这个和平if(empty($namaArray)==true)
  • 所以,我的错误只导致这种唯一的代码和平 if(empty($namaArray)==true) ??有
  • 如何发送$namaArray ??
【解决方案2】:

试试这个功能:

<?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>";

【讨论】:

  • 我更新了我的答案,没有大的变化。但如果这是一项家庭作业,则不应使用堆栈溢出来执行此操作。
  • 我真的被困在这里,我没有任何想法来解决它哈哈,顺便说一句,谢谢你的回答。我会试试的,如果它不起作用我会告诉你谢谢
猜你喜欢
  • 2020-09-30
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2017-09-14
  • 2012-06-22
  • 2018-02-08
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多