php多维数组把value值赋值到key

WBOY
發布: 2016-06-23 13:41:03
原創
1364 人瀏覽過

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是对象,而不是数组怎么做呢?

当字符串处理吧。祖宁给你的方法你都无法接受,那就用正则当字符串处理吧

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板