将值放在多维数组键中

时间:2016-03-23 14:36:16

标签: php arrays multidimensional-array

$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'');

我有上面的数组,有些键有值,有些键没有值。所以我想搜索这个数组并为那些没有价值的键放置

我想要的结果:

$newfirstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'No');

我在网上搜索查找array_filter()array_map()等功能。我不知道它是否适用于此

我的小尝试

$firstarray = array("first"=>'pakistan',"second"=>'bangladesh',"third"=>'');


foreach($firstarray as $keyx){
    if($keyx==''){
        $keyx='no'; //sorry for this example, at this point i don't know how to put values.
        print_r($firstarray );
    }
}

此代码显示原始数组,而不是将no作为第三个键的值。

3 个答案:

答案 0 :(得分:4)

通过引用运行foreach循环可能最简单,如下所示:

foreach ($array as $key => &$val) {
    if ($key == '') {
        $val = 'No';
    }
}

&表示您通过引用分配值,因此可以在循环内从右侧分配。

编辑:由于你想要一个新的数组,你可以轻松地做到这一点:

$new = array();
foreach ($array as $key => $val) {
    if ($val == '') {
        $val = 'No';
    }
    $new[$key] = $val;
}

这样,您只需浏览第一个阵列并即时创建一个新阵列。

答案 1 :(得分:2)

循环遍历您的数组并检查该值是否等于"",如果是,请将其替换为no

$result = array_map(function($v){$v == "" ? "no" : $v;}, $array);

答案 2 :(得分:1)

我喜欢str_replace()但是你提到了array_map()

$newfirstarray = array_map(function($v){ return empty($v) ? 'No' : $v; }, $firstarray);

正确的foreach()将是:

foreach ($firstarray as $key => $val) {
    $newfirstarray[$key] = empty($val) ? 'No' : $val;
}