Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组\要检查条件的过滤器?_Php_Multidimensional Array_Array Filter - Fatal编程技术网

Php 数组\要检查条件的过滤器?

Php 数组\要检查条件的过滤器?,php,multidimensional-array,array-filter,Php,Multidimensional Array,Array Filter,我可以使用array_filter检查多维数组中的特定条件以替换if()语句吗 想让它取代这样的东西: if($item[0] == $key && $item[1] == "Test"){ //do something here.... }else{ //some other code here... } 当前阵列: Array ( [Zone] => Array ( [Type] => s45

我可以使用array_filter检查多维数组中的特定条件以替换if()语句吗

想让它取代这样的东西:

if($item[0] == $key && $item[1] == "Test"){
    //do something here....
}else{
    //some other code here...
}
当前阵列:

Array
(
    [Zone] => Array
        (
            [Type] => s45
            [packageA1] => Array
                (
                    [level] => REMOVE FROM DB
                    [stage] => REMOVE FROM DB
                    [description] => description goes here
                    [image] => NULL
                )

        )
)
我想先搜索一下[Type]是否存在。如果它不存在,我想我会使用array_splice将它插入到现有的数组中。如果它确实存在,那么我将检查[packageA1]是否存在,如果[packageA1]不存在,那么我将再次使用array_splice。如果[packageA1]确实存在,那么如果插入,我将跳过任何类型


这有意义吗?

array\u filter
用于过滤数组,而不是取代基于数组内容的布尔逻辑

array\u filter
接受两个参数-
input
callback

回调
函数应采用单个参数(数组中的一项),并返回
true
false
。函数返回一个数组,其中所有返回的
false
项都已删除

(如果未指定
callback
函数,则所有等于
false
的项都将从结果数组中删除。)

编辑:

根据您更新的文本,下面的代码应满足您的要求:

if (!$item['Zone']['Type']) {
    $item['Zone']['Type'] = $something;
}
if (!$item['Zone']['packageA1']) {
    !$item['Zone']['packageA1'] = $something;
}
显然,您需要用实际需要添加的内容替换
$something

使用三元运算符可以缩短此代码

如果您运行的是PHP 5.3或更高版本,则可以执行以下操作:

$item['Zone']['Type'] = $item['Zone']['Type'] ?: $something;
$item['Zone']['packageA1'] = $item['Zone']['packageA1'] ?: $something;
在5.3之前,您不能错过三元运算的中间部分,必须使用以下完整格式:

$value = conditon ? if_true : if_false;
(使用
?:
时,如我的示例中所示,“条件”和“if_true”采用相同的值。)

完整的三元运算符(对于5.3之前的PHP)如下所示:

$item['Zone']['packageA1'] = $item['Zone']['packageA1'] ? $item['Zone']['packageA1'] : $something;

那么,有没有一种很好的方法来查找嵌套的数组值,以便我可以根据这些值执行操作并执行特定的代码呢?我看不出您发布的代码有任何错误。如果你一次又一次地检查一个项目,你可以考虑一个<代码>开关语句。如果要在数组中查找特定项,可以使用\u array中的
。这取决于您正在做什么。我试图使用上述代码,但在多维数组中搜索$item[0]和$item[1],但似乎一直失败。我也尝试按数组搜索,但我没有任何运气。请更新你的问题,包括数组的结构和你要检查的内容。您可以使用
print\r($item)以输出阵列。更新了OP,感谢您迄今为止的帮助