0

我正在尝试通过数组名称获取特定值:

<?php
$json = json_decode($_POST['json'], true);

print_r($json);
?>

我得到这个变量:

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。怎么做?

4

2 回答 2

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 索引具有最新值。

在此处输入图像描述

于 2012-07-13T12:40:32.247 回答
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 并且您可以通过键访问其元素。

于 2012-07-12T08:30:53.707 回答