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