如何在php中从两个常规数组创建一个数组

时间:2016-03-29 11:23:52

标签: php arrays wordpress

我有一个课程的一些部分和单元的数组,部分是非数字的,单位是从wordpress生成的数字ID。

包含section和units的数组如下: - (a,1,2,3,b,4,5,6,7,c,8,9,10)

我想这样做$combine_array= ( a=> '1,2,3', b=> '4,5,6,7' c=> '8,9,10' )

2 个答案:

答案 0 :(得分:1)

首先,下次尝试更清楚地了解您的要求 - 现在没有人知道您组合这些数组的标准是什么。

从我从你的评论中收集的内容开始,你有$array = array( 'a', 1, 2, 3, 'b', 4, 5, 6, 7, 'c', 8, 9, 10 );这样的数组,然后你将它与多维数组合,其中键将是数组$array中的非数字值,值是数字键,对不对?

使用foreach循环可以非常简单地实现它。首先创建新数组,然后循环遍历$array中的所有值并检查值是否为数字 - 如果它不是数字,则将其保存到某个辅助变量并将所有数值添加到该键中。

$helper = false;
$combined = array();
$array = array( 'a', 1, 2, 3, 'b', 4, 5, 6, 7, 'c', 8, 9, 10 );

foreach($array as $value){
    if(is_string( $value )){
        $helper = $value;
    } else {
        $combined[ $helper ][] = $value;
    }
}

var_dump( $combined );

答案 1 :(得分:0)

我已将所有不是字符串的元素保存在另一个数组$b中,现在告诉我在这种情况下你想要存储这些元素吗?

$helper = false;
$combo = array();
$array = array( 34,'a', 1, 2, 3, 'b', 4, 5, 6, 7, 'c', 8, 9, 10 );
$b = array();
foreach($array as $key=>$value){
    //if(!is_int( $value )){ // if there is any other element beside string and you want to make them key 
    if(is_string( $value )){
        $helper = $value;
    } else {
        if($helper){
            $combo [ $helper ][] = $value;
        } else {
            $b[] = $value;
        }
    }
}

var_dump( $combo );
var_dump($b);

输出

array (size=3)
  'a' => 
    array (size=3)
      0 => int 1
      1 => int 2
      2 => int 3
  'b' => 
    array (size=4)
      0 => int 4
      1 => int 5
      2 => int 6
      3 => int 7
  'c' => 
    array (size=3)
      0 => int 8
      1 => int 9
      2 => int 10
array (size=1)
  0 => int 34