从存在键值的数组返回数组值

时间:2015-01-18 12:38:47

标签: php arrays

鉴于DummyClass上的这个静态方法,请告诉我如何让返回的数据给我订单位置 主数组中的数组

public static function editableColumns()
{
    return array(
        array('attribute' => 'name',
              'heading'   => 'Name',
              'type'      => 'singleline',
              'width'     => '50%'
        ),
        array('attribute' => 'displayName',
              'heading'   => 'Display Name',
              'type'      => 'singleline',
              'width'     => '50%'
        ),
    );
}

例如,如果我想要attribute == 'name'返回0 (因为name属性位于第一个数组中。如果我想要attribute == 'displayName',它应该返回1 < / em>的

希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

使用foreach循环:

public static function getKey($array, $searchKey, $searchValue, $multipleKeys = false){
    $keys = [];
    foreach($array as $key => $value){
        if(!isset($value[$searchKey]) || $value[$searchKey] != $searchValue)
            continue;

        if(!$multipleKeys)
            return $key;

        $keys[] = $key;
    }

    if(!$multipleKeys)
        return false;

    return empty($keys) ? false : $keys;
}

您可以这样调用此方法:

$key = Class::getKey(Class::editableColumns(), 'attribute', 'name'); //0
$keys = Class::getKey(Class::editableColumns(), 'type', 'singleline', true); //[0, 1]

答案 1 :(得分:1)

function editableColumns()
{
    return array(
        array('attribute' => 'name',
              'heading'   => 'Name',
              'type'      => 'singleline',
              'width'     => '50%'
        ),
        array('attribute' => 'displayName',
              'heading'   => 'Display Name',
              'type'      => 'singleline',
              'width'     => '50%'
        ),
    );
}

$key = 'attribute';
$needle = 'displayName';

$result = key(
    array_filter(
        editableColumns(),
        function($entry) use($key, $needle) {
            return $entry[$key] == $needle;
        }
    )
);

var_dump($result);

请注意,如果键/值对存在于多个条目中,则只有第一个将在$ result中返回