【问题标题】:How to create one array from two regular array in php如何在php中从两个常规数组创建一个数组
【发布时间】:2016-03-29 11:23:51
【问题描述】:

我有一个课程的一些部分和单元的数组,部分是非数字的,单元是从 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' )

【问题讨论】:

  • 你是如何分离它以使$combine_array= ( 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')

标签: php arrays wordpress


【解决方案1】:

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

从我在开始时从您的 cmets 收集的信息中,您有像 $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 );

【讨论】:

  • 一个简短的提示是,您可以在此处使用is_string() 代替!is_int()
  • 当第一个元素是数字时会发生什么??
  • 第一个元素每次都是 non_numeric
  • @PrafullaKumarSahu 切换到 is_string,谢谢。 SO 说第一个元素总是非数字的,所以不需要寻找那个变体。
  • 但是还有一个问题,当第一个元素是数字时会发生什么??
【解决方案2】:

我已经将所有不是字符串的元素保存在另一个数组$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2022-12-02
    • 2016-02-18
    相关资源
    最近更新 更多