我使用foreach循环在数组中遇到问题

时间:2018-06-19 05:25:42

标签: php

我在使用foreach循环的数组中得到三个值(" 123"," 456",#34; 789"),现在我希望每当我获得价值时" 456"然后从array.how中删除这个值我可以这样做吗?当我得到456时,我已经尝试过在数组内循环,但它仍然无效。

`

3 个答案:

答案 0 :(得分:2)

更好的方法是使用array_splice

然后只需创建一个函数来包装它[array_pluck],它会取出数组项,并更新原始输入。

<?php
$input = ["123","456","789"];

function array_pluck(&$array, $key) {
    if (isset($array[$key])) {
        return array_splice($array, $key, 1)[0];
    }
}

echo array_pluck($input, 1); //456

print_r($input);

https://3v4l.org/J42A5

如果你在数组上循环,然后你想删除这些项目,你也可以使用一个生成器。

<?php
$input = ["123","456","789"];

function array_pluck_gen(&$array) {
    foreach ($array as $k => $v) {
        unset($array[$k]);
        yield $v;
    }
}

foreach (array_pluck_gen($input) as $value) {
    echo $value;
}

print_r($input);

或者只是取消它。

<?php
$input = ["123","456","789"];

foreach ($input as $key => $value) {
    unset($input[$key]);
    echo $value;
}

print_r($input);

答案 1 :(得分:0)

你可以这样做:

$array = array("123","456","789") ;
$arrFinal = array();
array_walk($array, function($val, $key) use (&$arrFinal){
    if ($val != '456') {
        $arrFinal[$key] = $val;
    }
});
print_r($arrFinal);

答案 2 :(得分:0)

$array=array("123","456","789");
foreach($array as $key=>$val){
  if($val=="456"){
    unset($array[$key]);
  }
}
print_r($array);