我正在尝试循环遍历一个多维数组,如果满足条件,则将该数组的所有元素存储到一个新数组中,并以匹配条件的名称命名新数组。
$unique_states = array_unique($allstates);
$total = count($states);
for($i = 0; $i < $total; $i++){
foreach($unique_states as $keys => $values){
if(($states[$i][3] == $values)){
$values[] = $states[$i];
}
}
}
$states
是包含所有内容的大型数组。当我循环遍历这个数组时,如果满足条件if(($states[$i][3] == $values))
,则应创建一个名为$values
的新数组。
当我运行代码并打印$values
时,我会得到Fatal error: [] operator not supported for strings
错误。当我将名称更改为完全不同的名称时,我只会获得$states
中的整个数组。
不确定该如何做了。
编辑:
当我删除foreach
循环并像这样插入$values
的实际值时
if(($states[$i][3] == 'state1')){
$states1[] = $states[$i];
}
if(($states[$i][3] == 'state2')){
$states2[] = $states[$i];
}
它的表现非常好。但在有多个状态的情况下,上面的代码将不够高效,并且需要在添加新状态时每次进行更改。 我需要返回整个元素数组,即 $states[$i],其中 $states[$i][3] 匹配。
$states 输入数据示例:
Array
(
[0] => Array
(
[0] => firstname1
[1] => lastname1
[2] => Armstrong Landscaping
[3] => state1
[4] => email1
[5] => address1
)
[1] => Array
(
[0] => firstname2
[1] => lastname2
[2] => Armstrong Landscaping
[3] => state1
[4] => email2
[5] => address2
)
[2] => Array
(
[0] => firstname3
[1] => lastname3
[2] => Armstrong Landscaping
[3] => state1
[4] => email3
[5] => address3
)
[3] => Array
(
[0] => firstname4
[1] => lastname4
[2] => Cannon Heathcare Center
[3] => state2
[4] => email4
[5] => address4
)
[4] => Array
(
[0] => firstname5
[1] => lastname5
[2] => Cannon Heathcare Center
[3] => state2
[4] => email5
[5] => address5
)
示例输出应该看起来像这样。
Array
(
[state1] => Array
(
[0] => Array
(
[0] => firstname1
[1] => lastname1
[2] => Armstrong Landscaping
[3] => state1
[4] => email1
[5] => address1
)
[1] => Array
(
[0] => firstname2
[1] => lastname2
[2] => Armstrong Landscaping
[3] => state1
[4] => email2
[5] => address2
)
Array
(
[state2] => Array
(
[0] => Array
(
[0] => firstname1
[1] => lastname1
[2] => Armstrong Landscaping
[3] => state2
[4] => email1
[5] => address1
)
[1] => Array
(
[0] => firstname2
[1] => lastname2
[2] => Armstrong Landscaping
[3] => state2
[4] => email2
[5] => address2
)
致命错误:不支持字符串的[]运算符
。 - hello