Php 如何将数组格式化为key:value?
我有这样一个数组:Php 如何将数组格式化为key:value?,php,arrays,json,Php,Arrays,Json,我有这样一个数组: Array ( [0] => Chat Show [1] => Non-fiction [2] => Inspirational ) genres": [ "Chat Show", "Non-fiction", "Inspirational" ] Array ( 0 => array ( 'name' => 'Chat Show', ), 1 => array (
Array
(
[0] => Chat Show
[1] => Non-fiction
[2] => Inspirational
)
genres": [
"Chat Show",
"Non-fiction",
"Inspirational"
]
Array (
0 =>
array (
'name' => 'Chat Show',
),
1 =>
array (
'name' => 'Non-fiction',
),
2 =>
array (
'name' => 'Inspirational',
),
)
我正试图得到这种格式:
"genres": [
{
"name": "Chat Show"
},
{
"name": "Non-fiction"
},
{
"name": "Inspirational"
}
]
但我得到的是这样的东西:
Array
(
[0] => Chat Show
[1] => Non-fiction
[2] => Inspirational
)
genres": [
"Chat Show",
"Non-fiction",
"Inspirational"
]
Array (
0 =>
array (
'name' => 'Chat Show',
),
1 =>
array (
'name' => 'Non-fiction',
),
2 =>
array (
'name' => 'Inspirational',
),
)
这就是我正在做的:
while($row = mysqli_fetch_array($Data))
{
$Genres = explode('/', filter_var(rtrim($row['genres'], '/'), FILTER_SANITIZE_URL));
}
这是更大阵列的一部分
"genres" => $Genres
试试这个:$genres\u new['name']=$genres;
echo json_encode($tyres_new)代码>您的问题是,您有一个简单的字符串数组,但需要一个关联的多级数组。这是一个相对简单的操作。首先,让我们用一些代码来说明问题:
// That is what you have, an :
$Genres = [
"Chat Show",
"Non-fiction",
"Inspirational",
];
// or the same for php > 5.4:
$Genres = array(
"Chat Show",
"Non-fiction",
"Inspirational",
);
这将生成以下json字符串(echo json_encode($Genres);
):
但如果您想要这样的输出:
[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]
您必须将字符串转换为数组。您可以使用该循环(或类似的循环)执行此操作:
之后,您的阵列如下所示:
Array
(
[0] => Chat Show
[1] => Non-fiction
[2] => Inspirational
)
genres": [
"Chat Show",
"Non-fiction",
"Inspirational"
]
Array (
0 =>
array (
'name' => 'Chat Show',
),
1 =>
array (
'name' => 'Non-fiction',
),
2 =>
array (
'name' => 'Inspirational',
),
)
把东西放在一起,你会得到这样的东西:
<?php
// Do whatever is necessary to build your Genres array ...
$Genres = [
"Chat Show",
"Non-fiction",
"Inspirational",
];
// Convert the array into an array of arrays
foreach($Genres as $key => $name){
$Genres[$key] = ['name' => $name];
}
echo json_encode($Genres);
/**
Now you will get this output:
[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]
*/
// After that you can add it to the bigger array:
$biggerArray = [];
$biggerArray['genres'] = $Genres;
echo json_encode($biggerArray);
/**
Output:
{"genres":[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]}
*/
例如,这里是您的PHP数组
$var = array(
"Chat Show",
"Non-fiction" ,
"Inspirational"
);
没有键“name”。您应该创建一个新数组,并将每个元素作为一个数组推送到新数组中
$result = array();
foreach($var as $name)
{
$arr = array("name"=>$name);
array_push($result, $arr);
}
然后,使用json\u encode对$result
进行编码
$json = json_encode($result,true);
echo $json;
这是我的输出,echo$json
[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]
试试这个:
$Genres=array("Chat Show","Non-fiction","Non-fiction");
$new["genres"]=array();
foreach($Genres as $key => $name){
$new["genres"][$key] = ['name' => $name];
}
echo json_encode($new);
输出
{“类型”:[{“名称”:“聊天节目”},{“名称”:“非小说”},{“名称”:“非小说”}]}
结果
{"genres":[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]}
您在此处发布的json
字符串不是有效的json,或者是json
的一部分
[{"name":"Chat Show"},{"name":"Non-fiction"},{"name":"Inspirational"}]
因此,您的javascript中可能已经有了类型
,并且希望得到剩下的内容,即
[
{ "name": "Chat Show" },
{ "name": "Non-fiction" },
{ "name": "Inspirational" }
]
您当前的PHP$Genres
看起来像这样,因为您正在分解字符串
$Genres = [ 'Chat Show', 'Non-fiction', 'Inspirational' ];
将此应用于更改当前$Genres
array_walk($Genres, function(&$v){ $v = ['name'=>$v]; });
在javascript中使用它,就像
"genres": <?php json_encode($Genres)?>
“流派”:
foreach中的两行可以写成array\u push($result,array(“name”=>$name))代码>可能会节省一些处理能力