将json文件转换为php数组以从数组中选择随机名称

时间:2019-05-14 20:45:43

标签: php arrays json

问题如下:

我正在将Excel中每个名称附加的名称和值(repCode)列表导出到文件中。

然后,我想将文件转换为数组,以便可以使用一段代码从数组中选择一个随机名称并显示该随机名称。名称(以及附加在名称上的值(repCode))。

到目前为止,我已经尝试了许多选择,但是我一直遇到难以解决的问题。一个例子是:

<?php

$jsondata = file_get_contents("Names.json");
$json = json_decode($jsondata, true);
$output = '<ul>';
foreach($json['Reps']as $reps){
$output .='<h4>' .$reps['Client']."<h4>";
$output .= "<li>".$reps['Code']."</li>";

}

$output .= "</ul>";
$element = $output[mt_rand(0, count($output) - 1)];

echo $element;

?>

那行不通。

文件如下:“ Names.json”

{
"Reps": [

{"Client":"Jack",
    "repCode":"tt1790861"},
{"Client":"James",
    "repCode":"tt1790862"},
{"Client":"Sam",
    "repCode":"tt1790863"},
{"Client":"Hendry",
    "repCode":"tt1790864"},
{"Client":"Samone",
    "repCode":"tt1790865"},
{"Client":"Judy",
    "repCode":"tt179086"},
{"Client":"Jake",
    "repCode":"tt1790867"},
{"Client":"Amy",
    "repCode":"tt1790868"},
{"Client":"Brandon",
    "repCode":"tt1790869"},
{"Client":"Blake",
    "repCode":"tt17908610"},
{"Client":"Rick",
    "repCode":"tt17908611"},
{"Client":"Morty",
    "repCode":"tt17908612"}       
]
}

然后下面是一些代码:

<?php
  // JSON string
  $someJSON = "Names.json";

  // Convert JSON string to Array
  $someArray = json_decode($someJSON, true);
  print_r($someArray);        // Dump all data of the Array
  echo $someArray[0]["Client"]; // Access Array data

?>

回显文件时没有任何结果。 因此,我什至无法进入要使用已转换为数组的文件的位置,因此我可以使用代码来选择随机名称+相关的代表代码并显示它

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在第一个示例中,您尝试使用$output作为数组,不是。另外,您没有访问$element的键:

$element = $json['Reps'][mt_rand(0, count($json['Reps']) - 1)];
//or
$element = $json['Reps'][array_rand($json['Reps'])];
echo $element['Client'];
echo $element['repCode'];

对于第二个示例,您实际上并没有加载JSON文件,然后忘记了Reps键:

$someJSON = file_get_contents("Names.json");
$someArray = json_decode($someJSON, true);
print_r($someArray);
echo $someArray["Reps"][0]["Client"];
//or random
echo $someArray["Reps"][array_rand($someArray["Reps"])]["Client"];

答案 1 :(得分:-1)

$json = file_get_contents('Names.json');
$reps = json_decode($json, true);
$key = array_rand($reps['Reps']);
$randomRepName = $reps['Reps'][$key]['Client'];
$randomRepCode = $reps['Reps'][$key]['repCode'];