如何在没有循环的PHP中检查数组2维中的索引?

时间:2017-10-11 13:59:45

标签: php arrays loops

我试着这样:

<?php 
    $list_team = array( 
                (object)array(
                    'id' => 1, 
                    'name' => 'chelsea.jpg'
                ),
                (object)array(
                    'id' => 2, 
                    'name' => 'mu.jpg'
                ),
                (object)array(
                    'id' => 3, 
                    'name' => 'arsenal.jpg'
                ),
            );

    $team = 'chelsea.jpg';

    echo '<pre>';print_r($team);echo '</pre>';
    echo '<pre>';print_r($list_team);echo '</pre>';

    foreach($list_team as $key => $value) {
        if($value->name == $team)
            $team_selected = $team;
    }
    echo '<pre>';print_r($team_selected);echo '</pre>';
    die();
?>

如果代码执行了,结果如下:

chelsea.jpg

Array

(

[0] => stdClass Object   ( [id] => 1

[name] => chelsea.jpg

)

[1] => stdClass Object

(

[id] => 2

[name] => mu.jpg

)

[2] => stdClass Object

(

[id] => 3

[name] => arsenal.jpg

)

)

chelsea.jpg

使用循环的代码

但是,我不想使用循环

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用array_search()array_column()

<?php

$list_team = array( 
                (object)array(
                    'id' => 1, 
                    'name' => 'chelsea.jpg'
                ),
                (object)array(
                    'id' => 2, 
                    'name' => 'mu.jpg'
                ),
                (object)array(
                    'id' => 3, 
                    'name' => 'arsenal.jpg'
                ),
            );

    $team = 'chelsea.jpg';

    // array column, returns all value of sub array, with key name
    // array_search will return key
    $key = array_search($team, array_column($list_team, 'name'));

    if($key!==false){

        // your object will be
        print_r($list_team[$key]);

        // access remaining..
        echo $list_team[$key]->name.' '. $list_team[$key]->id.PHP_EOL;
    }
?>

答案 1 :(得分:1)

尝试以下方法:

$key = array_search($team, array_column($list_team, 'name'));
$team_selected = $list_team[$key]->name;

这将使用name搜索数组并返回并返回主数组的key,您可以使用它来访问嵌套数组的内容并将值赋给。 $team_selected

答案 2 :(得分:0)

如果要访问多维数组中的特定属性,可以执行以下操作。

例如,返回第一个数组的ID:

echo $list_team[0]["id"];

只需将[0]更改为[1]或任何提及您要调用的数组,然后只需使用该属性即可。但是如果你想打印整个阵列,我真的建议你继续循环。使用循环,您确定可以获得所有元素。让我们说你像我说的那样硬编码,然后一个月后你添加了10个新数组,所以你必须编辑你的整个代码。