PHP如果数组是多维的,如何从值获取键名

时间:2016-04-13 09:57:52

标签: php arrays multidimensional-array

我有以下数组并获得此结果:

Array
(
    [0] => stdClass Object
        (
            [UnitIdx] => 10
            [Title] => 순차
            [Description] => 
            [NumSteps] => 9
            [ThumbnailPathName] => Level_1_Unit_thumbnail_Small.png
            [Step_1] => 4
            [Step_2] => 5
            [Step_3] => 6
            [Step_4] => 7
            [Step_5] => 8
            [Step_6] => 9
            [Step_7] => 10
            [Step_8] => 11
            [Step_9] => 12
            [Step_10] => 0
            [Step_11] => 0
            [Step_12] => 0
            [Step_13] => 0
            [Step_14] => 0
            [Step_15] => 0
            [Step_16] => 0
            [Step_17] => 0
            [Step_18] => 0
            [Step_19] => 0
            [Step_20] => 0
        )
)

现在我想找到关键的表单值。例如,值为11,因此密钥为Step_8

知道如何从值返回键名吗?

感谢。

2 个答案:

答案 0 :(得分:0)

看看这个:

ClassActivityEdit

检查工作小提琴:CLICK!

<强> 说明:

1)android:parentActivityName="com.teamtreehouse.oslist.ClassActivity" - 因为您拥有数组<?php //this part of code is for prepare sample data which is similar to your data $class = new stdClass; $class->prop1 = 'prop1'; $class->prop2 = 'prop2'; $array = array($class); //THIS IS METHOD FOR SEARCH KEY BY VALUE print_r(array_search('prop1',json_decode(json_encode($array[0]), true))); //you are looking for key for value 'prop1' 对象,因此您无法使用json_decode(json_encode($array[0]), true)功能。因此,此行将stdClass元素(即array_search对象)转换为数组。现在我们可以使用$array[0]函数按特定值搜索密钥。

2)stdClass - 我们正在使用array_search函数来获取数组元素的键,其值等于print_r(array_search('prop1',json_decode(json_encode($array[0]), true)));。该功能的文档说:

  

array_search - 在数组中搜索给定值并返回   相应的密钥如果成功

因此,我们获得与array_search值对应的密钥,即prop1prop1函数向我们显示结果。您可以将操作结果分配给变量,并将其用于代码的其他部分,例如:

,而不是这样
prop1

答案 1 :(得分:0)

您可以使用array_search()按值搜索密钥,并按typecasting将对象转换为PHP数组,下面是一个示例:

<?php

    $object = array();
    $object[0] = new StdClass;
    $object[0]->foo = 1;
    $object[0]->bar = 2;

    echo "<pre>";
    print_r($object);
    echo "</pre>";

    $key = array_search ('2', (array) $object[0]);
    echo "<pre>";
    print_r($key);

?>

<强>输出:

Array
(
    [0] => stdClass Object
        (
            [foo] => 1
            [bar] => 2
        )

)

bar