我有以下代码:
$rt1 = array
(
'some_value1' => 'xyz1',
'some_value2' => 'xyz2',
'value_1#30'=>array('0'=>1),
'value_2#30'=>array('0'=>2),
'value_3#30'=>array('0'=>3),
'value_1#31'=>array('0'=>4),
'value_2#31'=>array('0'=>5),
'value_3#31'=>array('0'=>6),
'some_value3' => 'xyz3',
'some_value4' => 'xyz4',
);
$array_30 = array
(
'0'=>1,
1=>'2',
2=>'3'
);
$array_31 = array
(
'0'=>4,
'1'=>'5',
'2'=>'6'
);
我需要将其设为数组并将array_30
和array_31
插入数据库。
答案 0 :(得分:2)
foreach($rt1 as $value){
$rt2[] = $value['0'];
}
问题已更新,所以这是一个更新的答案。快速检查,您应该尝试将此更新为更具通用性的目的,但作为概念证明,可运行的示例:
<?php
$rt1 = array
(
'some_value1' => 'xyz1',
'some_value2' => 'xyz2',
'value_1#30'=>array('0'=>1),
'value_2#30'=>array('0'=>2),
'value_3#30'=>array('0'=>3),
'value_1#31'=>array('0'=>4),
'value_2#31'=>array('0'=>5),
'value_3#31'=>array('0'=>6),
'some_value3' => 'xyz3',
'some_value4' => 'xyz4',
);
$finalArrays = array();
foreach($rt1 as $key=>$value){
if(is_array($value)){
$array_name = "array_".substr($key,-2);
${$array_name}[] = $value['0'];
}
}
var_dump($array_30);
var_dump($array_31);
?>
将输出数字分别为1,2,3和4,5,6的两个数组
答案 1 :(得分:0)
我假设你想加入每个二级数组的值,在这种情况下:
$result = array();
foreach ($rt1 as $arr) {
foreach ($arr as $item) {
$result[] = $item;
}
}
答案 2 :(得分:0)
假设这是您的实际代码,可能您需要使用foreach
在某处复制数组,然后根据需要创建新数组:
foreach($arr as $key => $value) {
$arr[$key] = 1;
}
答案 3 :(得分:0)
受Nanne的启发(这让我想起动态命名变量),此解决方案将适用于\#
之后的每个标识符,无论其长度如何:
foreach ( $rt1 as $key => $value )
{
if ( false == strpos($key, '#') ) // skip keys without #
{
continue;
}
// the part after the # is our identity
list(,$identity) = explode('#', $key);
${'array_'.$identity}[] = $rt1[$key]['0'];
}