php - 遍历数组并创建一个具有匹配参数名称的新数组

标签 php arrays

我正在尝试遍历一个多维数组,如果条件匹配,则该数组的所有元素都应存储到一个以匹配的条件命名的新数组中。

     $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)) 匹配时,应创建一个名为 $值

当我运行代码和 print_r($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] 匹配。

enter image description here

来自 $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
            )

最佳答案

试试这个:

${$values} = array();
${$values}[] = $states[$i];

用于输出:print_r(${$values});

详情阅读:Dynamic variable names in PHP

关于php - 遍历数组并创建一个具有匹配参数名称的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163199/

相关文章:

c - 当按值提供给函数时,结构的数组字段是否会被完全克隆?

php - 根据多个值对多维数组进行排序

javascript - 在数组 javascript 之间获取特定值?

javascript - Jquery AJAX 404 form.php 未找到

php - 我想明智地显示数据页面(PAGINATION)

php - empty() 和 isset() 如何避免对 undefined variable 的警告?

Java 访问数组中的值

php - 为什么键盘和字母在 NetBeans 中不匹配?

php - 如何在 Symfony2 中抛出 403 异常?

java - 使用java在Excel中插入存储在数组列表中的数据