一个PHParray的问题。
现有PHP代码如下$result = array(
'0'=>array('Code'=>'01','Name'=>'开始'),
'1'=>array('Code'=>'02','Name'=>'计划中'),
'2'=>array('Code'=>'03','Name'=>'停止'),
'3'=>array('Code'=>'10','Name'=>'暂停'),
'4'=>array('Code'=>'20','Name'=>'测试')
);
var_dump($result);
echo '<br />';
$test = array();
foreach($result as $k=>$v) {
$test = array_merge($test,array($v['Code']=>$v['Name']));
}
var_dump($test);
echo '<br/>';
print_r($test);
可是执行结果却让人意外,这是什么问题??
array(5) { =>array(2) { ["Code"]=>string(2) "01" ["Name"]=>string(4) "开始" }
=>array(2) { ["Code"]=>string(2) "02" ["Name"]=>string(6) "计划中" }
=>array(2) { ["Code"]=>string(2) "03" ["Name"]=>string(4) "停止" }
=>array(2) { ["Code"]=>string(2) "10" ["Name"]=>string(4) "暂停" }
=>array(2) { ["Code"]=>string(2) "20" ["Name"]=>string(4) "测试" }
}
//下面的结果很让人意外,使用强制转型也不行。
array(5) { ["01"]=> string(4) "开始"
["02"]=> string(6) "计划中"
["03"]=> string(4) "停止"
=> string(4) "暂停"
=> string(4) "测试"
}
Array ( => 开始 => 计划中 => 停止 => 暂停 => 测试 )
我现在就是想将数据库查询出来的结果放在一个新的数组中,将code的value当作新数组的key,Name的value当作key的value.
又其他的方法吗》》 没有人看到有何异常么????
原数组中是10与20,结果却变成了0与1?
=> string(4) "暂停"
=> string(4) "测试"
召唤各位大大~~~。
Hex 我建议给 key 加个前缀。 这是因为PHP认为'10'及'20'是数字,进行了reindexing。
试试:
$result = array(
'0'=>array('Code'=>'01','Name'=>'开始'),
'1'=>array('Code'=>'02','Name'=>'计划中'),
'2'=>array('Code'=>'03','Name'=>'停止'),
'3'=>array('Code'=>'010','Name'=>'暂停'),
'4'=>array('Code'=>'020','Name'=>'测试')
);
var_dump($result);
echo '<br />';
$test = array();
foreach($result as $k=>$v) {
$test = array_merge($test,array($v['Code']=>$v['Name']));
}
var_dump($test);
echo '<br/>';
print_r($test);
或:
$result = array(
'0'=>array('Code'=>'01','Name'=>'开始'),
'1'=>array('Code'=>'02','Name'=>'计划中'),
'2'=>array('Code'=>'03','Name'=>'停止'),
'3'=>array('Code'=>'10','Name'=>'暂停'),
'4'=>array('Code'=>'20','Name'=>'测试')
);
var_dump($result);
echo '<br />';
$test = array();
foreach($result as $k=>$v) {
$test += array($v['Code']=>$v['Name']);
}
var_dump($test);
echo '<br/>';
print_r($test);
注意!后面用+的例子,看到'01','02'及'03',但后面两个是10及20,并无引号。 好奇怪,居然转型了也不行。
感谢hex的建议,感谢楼上 燃雲 的例子,
不过我刚才试了 使用$test['10']也可以正常的获取道value;
就使用下面一种方式了,因为之前的那些数据是存入数据库的,01..99都是递增的。
页:
[1]