php多维数组把value值赋值到key,改成这种效果,怎么做
"image": [
{
"local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 1
},
{
"local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 2
},
{
"local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 3
}
]
改成:
"image": [
{
"1": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 1
},
{
"2": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 2
},
{
"3": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg",
"picture_id": 3
}
]
回复讨论(解决方案)
注意“:1,2,3是picture的值
<?php$arr=array( array( 'local_path' =>'aaaaa', 'picture_id' =>1 ), array( 'local_path'=>'bbbbbbb', 'picture_id'=>2 ), array( 'local_path'=>'ccccccc', 'picture_id'=>3 ), ); function change($arrr,$a=0){ foreach($arrr as $key=>$value){ $arr[$a][$value['picture_id']]=$value['local_path']; $arr[$a]['picture_id']=$value['picture_id']; $a++; } return $arr; } $arry=change($arr); print_r($arry); ?>
<?php$arr=array( array( 'local_path' =>'aaaaa', 'picture_id' =>1 ), array( 'local_path'=>'bbbbbbb', 'picture_id'=>2 ), array( 'local_path'=>'ccccccc', 'picture_id'=>3 ), ); function change($arrr,$a=0){ foreach($arrr as $key=>$value){ $arr[$a][$value['picture_id']]=$value['local_path']; $arr[$a]['picture_id']=$value['picture_id']; $a++; } return $arr; } $arry=change($arr); print_r($arry); ?>
这样的确转过来了。但如果是对象呢?怎么转
你这不是 php 的数组,是 json
$s =<<< TXT "image": [ { "local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 1 }, { "local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 2 }, { "local_path": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 3 } ]TXT;$a = json_decode('{'. $s .'}', 1);foreach($a['image'] as &$item) { $item = array( $item['picture_id'] => $item['local_path'], 'picture_id' => $item['picture_id'] );}print_r($a);
Array( [image] => Array ( [0] => Array ( [1] => /upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg [picture_id] => 1 ) [1] => Array ( [2] => /upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg [picture_id] => 2 ) [2] => Array ( [3] => /upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg [picture_id] => 3 ) ))还原回 json
echo json_encode($a, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
{ "image": [ { "1": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 1 }, { "2": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 2 }, { "3": "/upload/14d4aaf3c5ef5b93e6c4c7418428ea71.jpg", "picture_id": 3 } ]}
<?php$arr=array( array( 'local_path' =>'aaaaa', 'picture_id' =>1 ), array( 'local_path'=>'bbbbbbb', 'picture_id'=>2 ), array( 'local_path'=>'ccccccc', 'picture_id'=>3 ), ); function change($arrr,$a=0){ foreach($arrr as $key=>$value){ $arr[$a][$value['picture_id']]=$value['local_path']; $arr[$a]['picture_id']=$value['picture_id']; $a++; } return $arr; } $arry=change($arr); print_r($arry); ?>
如果$arr是对象,而不是数组怎么做呢?
当字符串处理吧。祖宁给你的方法你都无法接受,那就用正则当字符串处理吧