【问题标题】:Find argument in array if other argument exists如果存在其他参数,则在数组中查找参数
【发布时间】:2017-04-19 20:31:57
【问题描述】:

如果其他数组中存在其他参数,我的任务是查找参数的值。我不知道如何正确地用文字来描述它,所以这里是伪代码:

if $_POST['from'] == X

$array'name' == X 及其键'timezone' 中查找并将此值保存为参数:

    $array = [
        [
            'name'     => 'A',
            'timezone' => 'AB',
        ],
        [
            'name'     => 'B',
            'timezone' => 'BC',
        ],
        [
            'name'     => 'C',
            'timezone' => 'AB',
        ],

如果$_POST['name'] == B'timezone' == BC

如果 X, timezone = B,我可以将它提高 10 倍,但我认为这不是最好的方法。我现在处于这一步:

 foreach ($array as $key => $value) {
         foreach ($value as $key2 => $value2) {
            if ($value2 == $_POST['from']) {
                if ($key2 == 'timezone') {
                    echo $key;
                }
            }
        }
    }

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

只要 name 值是唯一的:

echo array_column($array, 'timezone', 'name')[$_POST['from']];
  • 提取一个以name为键、timezone为值的数组
  • 使用键 $_POST['from'] 访问数组

当然你可以先检查它是否存在(假设你之前检查过isset($_POST['from'])):

$tz = array_column($array, 'timezone', 'name');

if(isset($tz[$_POST['from']])) {
    echo $tz[$_POST['from']];
}

【讨论】:

  • 这是 array_column 的一个有趣用法——以前从未见过这样的用法。
  • 非常感谢。我尝试使用 array_column,但不知道此函数中的此类开发可能性。
猜你喜欢
  • 2023-03-08
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多