【问题标题】:Build array by string name OR make multiple array by string values按字符串名称构建数组或按字符串值创建多个数组
【发布时间】:2016-10-21 13:35:43
【问题描述】:

我想通过打破主数组来构建一个数组或多个数组,而我的数组是这样的,

    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) 和 string2string3 相同,所以每个数组都有它的值(三个)。 请帮我建立这个。 注意:所有字符串名称都是静态的。

提前谢谢你。

结果我应该喜欢:

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
)   

【问题讨论】:

  • 能告诉我们结果应该是怎样的吗?
  • 是的。让我再次更新我的问题。
  • 所以你想要'string1'作为键,下一个数字作为值?
  • 最好最好先看看你是如何创建这个数组的,然后按照你真正想要的方式创建它
  • 我认为将所有内容重新排列在一个大的多维数组中比生成大量新变量(在重新排序后可能存在也可能不存在)更好。

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


【解决方案1】:

我想这会让你得到你想要的。

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

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

)

但我仍然认为,最好回到创建原始数组的位置并修改该过程,而不是为其编写修复程序

【讨论】:

  • 效果很好。感谢您的帮助。
猜你喜欢
  • 2013-02-21
  • 1970-01-01
  • 2011-08-20
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2013-11-29
相关资源
最近更新 更多