Json嵌套数组发送到php文件返回null

时间:2018-03-28 08:32:25

标签: php arrays json nested

$locs='"[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]"';
$locsArray = json_decode($locs, true);
echo json_encode($locsArray);

//output is : null

3 个答案:

答案 0 :(得分:0)

首先让我说,因为我必须去解决你称之为CODE dude的混乱局面,所以你必须要检查有多少打开和关闭的花括号。 但是对于你的代码,这里是解决方案:

$locs = array("loicd"=>"101","rows"=>[array("itemcode"=>"100005","qty"=>10,"desc"=>"Potato Chips Banana Chips","locs"=>"101"),array("itemcode"=>"100002","qty"=>20,"desc"=>"mango","locs"=>"101")]);
$js_en = json_encode($locs);
$js_dc = json_decode($js_en, true);
var_dump($js_dc);
print "<br />".$js_dc['rows'][0]['itemcode'];

使用var_dump()在使用json_arrays

时非常有帮助

所以不要编码你编码的字符串和数组:)

答案 1 :(得分:0)

你必须更新两件事。第一次更新from selenium import webdriver from selenium.webdriver.chrome.options import Options import webbrowser driver = webdriver.Chrome() webbrowser.open('https://www.instagram.com/accounts/login/') from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--disable-infobars") browser = webdriver.Chrome(executable_path = "C:\chromedriver",chrome_options=chrome_options) browser = webbrowser login_elem = webbrowser.find_element_by_xpath('//article/div/div/p/a[text()="Anmelden"]') login_elem.click() driver.find_element_by_css_selector('.button.c_button.s_button').click() ese.clickButton(Anmelden) 改变:

$locs

为:

$locs='"[{"locid":"101","rows":
  [{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]"';

然后代替$locs='[{"locid":"101","rows": [{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]'; 使用echo而在print内你尝试迭代forEach而不是 PHP数组所以你需要迭代你的解析结果$locs

$locsArray

答案 2 :(得分:0)

更新后,您的新$locs变量在开头和结尾没有双引号:

$locs='[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]'; 

获取&#34; itemcode&#34;你可以将你的foreach更新为:

$locs='[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]';
$locsArray = json_decode($locs, true);
foreach($locsArray[0]["rows"] as $locs) {
    echo $locs["itemcode"];
}

这会给你100005100002

要更新您可以使用的多个结果的尝试:

foreach ($locsArray as $locs) {
    echo $locs["locid"];
    foreach ($locs["rows"] as $row) {
        echo $row["itemcode"];
    }
}

See the Demo

相关问题