按字符串名称构建数组或按字符串值创建多个数组

时间:2016-10-21 13:35:43

标签: php arrays string multidimensional-array array-push

我想通过破坏主数组来构建数组或多个数组,我的数组就像是

    Array
(
    [0] => string1   
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 66
    [5] => 34
    [6] => string1
    [7] => aww
    [8] => brr
    [9] => string3
    [10] => xas

)   

所以基本上是通过值'string1'我想创建一个新数组或第一个数组,它只有 这三个值(1 ,2,3)和 string2 string3 相同,因此每个数组都有其值(三个)。 请帮我建立这个。 注意:所有字符串名称都是静态的。

提前谢谢。

我应该得到结果:

string1 array:  
<pre>Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 66
    [5] => 34
)

string2 array:  
<pre>Array
(
    [1] => aww
    [2] => brr
)

string3 array:  
<pre>Array
(
    [1] => xas
)   

1 个答案:

答案 0 :(得分:2)

我想这会得到你想要的东西。

  

它确实假设旧数组中的第一个条目是关键字!

$old = array('string1',1,2,3,66,34,'string2','aww','brr','string3','xas');
$new = array();

$keywords = array('string1', 'string2', 'string3');
$last_keyword = '';

foreach ($old as $o) {
    if ( in_array($o, $keywords) ) {
        $last_keyword = $o;        
    } else {
        $new[$last_keyword][] = $o;
    }
}

print_r($new);

它创建一个像这样的新数组

Array
(
    [string1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 66
            [4] => 34
        )

    [string2] => Array
        (
            [0] => aww
            [1] => brr
        )

    [string3] => Array
        (
            [0] => xas
        )

)
  

但是我仍然坚持认为最好回到创建原始数组的位置,然后修改该进程而不是为它编写修正