查看我的示例,我要做的是确保没有null
结果
基本上,foreach $ array,如果$ xxx [$ key]为null,从头开始重新启动赋值
下面,我正在硬编码$ k,$ v和$ y,但我不知道$array
有多大,所以我不能永远这样循环。
任何想法如何简化这个?如果foreach
在$array
上并且不用于循环
$xxx = ['a','b'];
$array = [1,2,3,4,5,6,7,8,9];
$k = 0;
$v = 0;
$y = 0;
foreach($array as $key => $val){
if(isset($xxx[$key])){
var_dump($xxx[$key]);
} else {
if(isset($xxx[$k])){
var_dump($xxx[$k]);
} else {
if(isset($xxx[$v])){
var_dump($xxx[$v]);
} else {
var_dump($xxx[$y]);
$y++;
}
$v++;
}
$k++;
}
}
结果:
string 'a' (length=1)
string 'b' (length=1)
string 'a' (length=1)
string 'b' (length=1)
string 'a' (length=1)
string 'b' (length=1)
string 'a' (length=1)
string 'b' (length=1)
null
答案 0 :(得分:1)
使用mod运算符,无论$ array或$ xxx的大小如何,它都会无限期地继续运行。
$xxx = ['a','b','c','d'];
$array = [1,2,3,4,5,6,7,8,9];
foreach ($array as $key => $value) {
var_dump($xxx[$key % count($xxx)]);
}
打印出来:
string(1) "a"
string(1) "b"
string(1) "c"
string(1) "d"
string(1) "a"
string(1) "b"
string(1) "c"
string(1) "d"
string(1) "a"
答案 1 :(得分:0)
汇总你自己的函数以检查项目值是否为null然后传递或设置其值作为回调函数传递给array_map()或array_walk()以检查值,所以你得到回调:
array_walk($data, function(&$item, $key) {
if ( $item === null ) {
$item = something;
// or do something else
}
});