我正在尝试通过数组名称获取特定值:
<?php
$json = json_decode($_POST['json'], true);
print_r($json);
?>
我得到了这个varray:
Array
(
[0] => Array
(
[name] => pav
[value] => g
)
[1] => Array
(
[name] => ppav
[value] => f
)
[2] => Array
(
[name] => kiekis
[value] => g
)
[3] => Array
(
[name] => kaina
[value] => g
)
[4] => Array
(
[name] => ppav
[value] => f
)
[5] => Array
(
[name] => kiekis
[value] => g
)
[6] => Array
(
[name] => kaina
[value] => f
)
[7] => Array
(
[name] => ppav
[value] => g
)
)
尝试使用foreach函数,但无法获得特定值:
foreach ($json as $key => $value) {
echo "name".$key['name']." value".$value['value']."<br />";
}
它打印所有数组值:
name value<br />name valueasd<br />name valueasd<br />name values<br />name values<br />name values<br />name values<br />name valuea<br />name valueasd<br />name valued<br />
但我无法通过名称选择特定值来添加到nysql。怎么做?
答案 0 :(得分:2)
以下是经过测试的代码
<?php
$json_array = array(
array('name'=>'pav', 'value'=>'g'),
array('name'=>'ppav', 'value'=>'f'),
array('name'=>'kiekis', 'value'=>'g'),
array('name'=>'ppav', 'value'=>'f')
);
echo "<pre>";
print_r($json_array);
echo "</pre>";
$assoc_array = array();
for($i = 0; $i < sizeof($json_array); $i++)
{
$key = $json_array[$i]['name'];
$assoc_array[$key] = $json_array[$i]['value'];
}
echo "<pre>";
print_r($assoc_array);
echo "</pre>";
echo "assoc_array['pav'] = ".$assoc_array['pav'];
?>
下面给出了代码的输出,您可以看到与您的数组完全相同的数组被转换为关联数组,因为您的数组具有重复的名称,例如,有一个问题。 ppav或kiekis所以只有1个kiekis或ppav索引具有最新值。
答案 1 :(得分:1)
你必须重新创建数组
$json_array = json_decode($_POST['json'], true);
$assoc_array = array();
for($i = 0; $i < sizeof($json_array); $i++)
{
$key = $json_array[$i]['name'];
$assoc_array[$key] = $json_array[$i]['value'];
}
之后你会得到$ assoc_array,你可以按键访问它的元素。