php数组键问题

时间:2011-01-11 14:36:15

标签: 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',
);


$array_30 = array
(
'0'=>1,
1=>'2',
2=>'3'
);

$array_31 = array
(
'0'=>4,
'1'=>'5',
'2'=>'6'
);

我需要将其设为数组并将array_30array_31插入数据库。

4 个答案:

答案 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'];  
}