如何在php中从两个正则数组创建一个数组


How to create one array from two regular array in php

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

包含部分和单元的数组类似于:-(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' )

首先,下次试着更清楚地了解你在问什么——现在没有人知道你组合这些数组的标准是什么。

从我一开始从你的评论中收集到的信息来看,你有一个像$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 );

我已经在另一个数组$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