Php 数组\要检查条件的过滤器?
我可以使用array_filter检查多维数组中的特定条件以替换if()语句吗 想让它取代这样的东西: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
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,感谢您迄今为止的帮助