我有一个值数组,我想将值插入到另一个数组但是使用if条件,如果“if”为true,我想跳过迭代。
代码:
$array=array(array(1=>11,2=>22,3=>23,4=>44,5=>55));
$insert=array();
foreach($array as $k1=>$v1)
{
foreach($v1 as $k2=>$v2)
{
if($v2==23)
{
break;
}
}
$insert[]=$v1;
}
最终结果应该是那样的
Array
(
[0] => Array
(
[1] => 11
[2] => 22
[3] => 44
[4] => 55
)
)
我尝试过使用:break,return,continue ......
由于
答案 0 :(得分:2)
你为什么不这样试试?
foreach($v1 as $k2=>$v2)
{
if($v2!=23)
{
$insert[]=$v2;
}
}
编辑:
说明:如果变量$v2
的值不等于(即!=
符号)任何给定的数字代表不等式运算符,则使用if($ v2!= 23)进行检查如果是这样,它会将该值插入数组$insert
。
我希望现在很清楚。
抱歉,我写的是$ v1而不是$ v2,代码应该可以正常使用。
答案 1 :(得分:2)
有几种方法可以做到这一点。您可以遍历外部数组并使用内部数组上的array_filter来删除值23
的位置(IMO首选;这也使用$dontWant
数字的数组,因此它是以后更容易添加或更改数字):
<?php
$array = array(array(1=>11,2=>22,3=>23,4=>44,5=>55));
$insert = array();
//array of numbers you don't want
$dontWant = array(23);
//loop over outer array
foreach($array as $subArray){
//add to $insert a filtered array
//subArray is filtered to remove where value is in $dontWant
$insert[] = array_filter($subArray, function($val) uses ($dontWant) {
//returns true if the value is not in the array of numbers we dont want
return !in_array($val, $dontWant);
});
}
//display final array
echo '<pre>'.print_r($insert,1).'</pre>';
或者您可以引用第一个键添加到$insert
中的子数组(这更像是您的代码尝试做的事情,并表明您并不太远):
<?php
$array = array(array(1=>11,2=>22,3=>23,4=>44,5=>55));
$insert = array();
//loop over outer array
foreach($array as $k1=>$v1){
//add an empty array to $insert
$insert[$k1] = array();
//loop over inner array
foreach($v1 as $k2=>$v2){
//if the inner array value is not 23
if($v2 != 23){
//add to inner array in insert
$insert[$k1][] = $v2;
}
}
}
//display the result
echo '<pre>'.print_r($insert,1).'</pre>';
这两种方法都会产生相同的结果。使用array_filter的IMO是首选方法,但对于刚接触编程的人来说,第二种方法可能更容易理解。
答案 2 :(得分:1)
添加变种:)
$array=array(array(1=>11,2=>22,3=>23,4=>44,5=>55));
$insert=array();
foreach($array as $a)
{
while (($i = array_search(23, $a)) !== false)
{ unset($a[$i]); sort($a); }
$insert[] = $a;
}
print_r($a);
结果:
Array ( [0] => Array ( [0] => 11 [1] => 22 [2] => 44 [3] => 55 ) )