问个大神php问题
用foreach取出的数据库结果被复盖了怎么办,只有最后一次的结果如果不用 $aaa[]这种形式,还有别的方法吗 啊,解决了
依然循环取出就行了
不知道还有什么好办法没
foreach($mysql_return_data as $value){
foreach($value as $v=>$k){
$aa[] = $k;
}
}
感谢大神回复 本帖最后由 yemingtu 于 2019-3-26 13:50 编辑
围观者 发表于 2019-3-26 10:38
这样子果然可以,但它只能取出前面一条
源是这样的
那就这样,想去几层就加几层foreach循环,如果写成递归也行,有可能你的值是数组,要额外处理。
[*]$array = [[['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2],['a' => 1, 'b' => 2]]];
[*]$result = [];
[*]foreach ($array as $item){
[*] foreach ($item as $item2){
[*] $result[] = $item2;
[*] }
[*]}
[*]print_r($result);复制代码
结果:
[*]Array
[*](
[*] => Array
[*] (
[*] => 1
[*] => 2
[*] )
[*]
[*] => Array
[*] (
[*] => 1
[*] => 2
[*] )
[*]
[*] => Array
[*] (
[*] => 1
[*] => 2
[*] )
[*]
[*] => Array
[*] (
[*] => 1
[*] => 2
[*] )
[*]
[*])复制代码
围观者 发表于 2019-3-26 08:50
这个只是举例,实际的结果并不止fid一款,难道要全写进去吗
其实简单理解来说,就是多维数组变成 二维
这个样子??
[*]$array = [[['a' => 1, 'b' => 2]], [['a' => 1, 'b' => 2]]];
[*]$new_array = array_map(function ($item) {
[*] return $item;
[*]}, $array);
[*]
[*]var_dump($new_array);复制代码
结果:
[*]array(2) {
[*]=>
[*]array(2) {
[*] ["a"]=>
[*] int(1)
[*] ["b"]=>
[*] int(2)
[*]}
[*]=>
[*]array(2) {
[*] ["a"]=>
[*] int(1)
[*] ["b"]=>
[*] int(2)
[*]}
[*]}复制代码 肯定是你数据查询方式不对。一般数据库查询出来都是二维的。
说需求
orz2 发表于 2019-3-26 06:38
说需求
Array
(
=> Array
(
=> Array
(
=> 1
)
=> Array
(
=> Array
(
=> 2
)
)
变成
Array
(
=> Array
(
=> 1
=> Array
(
=> 2
)
怎么变
围观者 发表于 2019-3-26 08:08
Array
(
=> Array[*]$aaa = [];
[*]foreach($mysql_return_data as $v){
[*]$aaa[$v['fid']] = $v;
[*]}复制代码 好问帮顶。。。。。
orz2 发表于 2019-3-26 08:31
这个只是举例,实际的结果并不止fid一款,难道要全写进去吗
其实简单理解来说,就是多维数组变成 二维
如一个数组是这样的 $aaa[][]
新数组去掉中间的那个[]
变成 $aaa[]
页:
[1]
2