Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组格式化为key:value?_Php_Arrays_Json - Fatal编程技术网

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))可能会节省一些处理能力