多维数组

时间:2018-01-13 07:30:30

标签: php arrays

假设有一个像这样的二维数组:

$rates = [
        ['id' => 'd', 'title' => 'dollar', 'sign' => '$'],
        ['id' => 'r', 'title' => 'rial', 'sign' => 'ریال'],
        ['id' => 't', 'title' => 'toman', 'sign' => 'T']
]

我有一个名为$ rate的变量:

$rate = 'd';

现在我只想得到title数组的值id$ratedollar。在这种情况下$rates[????][title]

我知道我们可以搜索主数组中的数组但我寻找一种更简单的方法,如payment_id

什么是最好的方法?

2 个答案:

答案 0 :(得分:3)

如果您将其转换为使用id作为密钥使用array_column,那么您可以从那时开始访问...

$rates = [
        ['id' => 'd', 'title' => 'dollar', 'sign' => '$'],
        ['id' => 'r', 'title' => 'rial', 'sign' => 'ریال'],
        ['id' => 't', 'title' => 'toman', 'sign' => 'T']
]
$rates = array_column($rates,null,'id');

echo $rates['d']['title'];

...给出

dollar

答案 1 :(得分:2)

如果您想避免循环,使用array_searcharray_column是最好的方法。

您还可以转换数组或创建搜索功能,以便根据传递的内容选择您想要的内容

例如:在$rates获取title id等于d

<?php
$rates = [
        ['id' => 'd', 'title' => 'dollar', 'sign' => '$'],
        ['id' => 'r', 'title' => 'rial', 'sign' => 'ریال'],
        ['id' => 't', 'title' => 'toman', 'sign' => 'T']
];

$rates = function ($key, $where, $equals) use ($rates) {
    return $rates[array_search($equals, array_column($rates, $where))][$key];
};

echo $rates('title', 'id', 'd');        // dollar
echo $rates('sign', 'id', 'd');         // $
echo $rates('sign', 'title', 'dollar'); // $

https://3v4l.org/KrN5b