PHP - 如何搜索ID并在对象中显示其值

时间:2016-02-11 05:16:47

标签: php arrays

嗨,我有一个像这样的对象数组

$json = json_decode($featureJson);

//which returns below
Array
(
    [0] => stdClass Object
        (
            [productID] => 1
            [productName] => Toyo
            [assessments] => Array
                (
                    [0] => stdClass Object
                        (
                            [answer] => Yes
                        )

                    [1] => stdClass Object
                        (

                            [answer] => Yes
                        )

                    ...

                )

        )

    [1] => stdClass Object
        (
            [productID] => 2
            [productName] => Maze
            [assessments] => Array
                (
                    [0] => stdClass Object
                        (
                            [answer] => Yes
                        )

                    [1] => stdClass Object
                        (

                            [answer] => Yes
                        )

                    ...

                )

        )

)

我有另一个数组需要匹配$ json(对象数组)的ID并返回其productName。

$string = "1,2|2,1";
$IdArray = explode('|', $string);

$foo = '';
foreach ($IdArray as $item) {
    $foo .= '{' . $item . '},';
}
echo $foo;

$foo返回{1,2},{2,1}并且我匹配$ json因此会显示 - {Toyo,Maze},{Maze,Toyo},我该怎么做?我有一些使用array_map()

的提示

但仍然不知道在对象中匹配。

1 个答案:

答案 0 :(得分:0)

如果首先为名称分隔数组,这会更容易。

<?php 

    $featureJson = '[{"productID":1,"productName":"Toyo","assessments":[{"answer":"Yes"},{"answer":"No"}]},{"productID":2,"productName":"Maze","assessments":[{"answer":"Yes"},{"answer":"Yes"}]}]';

    $json = json_decode($featureJson);

    // Make an array of names
    $names = []; 
    foreach($json as $products){
            $names[$products->productID] = $products->productName;   
    };


    $string = "1,2|2,1";

    $IdArray = explode('|', $string); 
    $foo = []; 
    foreach ($IdArray as $ids) {
        $ids = explode(',',$ids);
        $fooItem = [];
        foreach($ids as $id){
            $fooItem[] = $names[$id];
        }

        $foo[]= '{' . implode(',',$fooItem) . '}'; } 
        echo implode(',',$foo);

结果:

{Toyo,Maze},{Maze,Toyo}

检查here