$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作为第三个键的值。
答案 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;
}