【问题标题】:How to check if an array key value has an element如何检查数组键值是否有元素
【发布时间】:2016-06-20 07:47:28
【问题描述】:

我有一个这样的数组

Array
(
    [0] => 
    [
        "18.06.2016",
        "18.06.2016",
        "18.06.2016",
        "Test Test",
        "Test Name",
        "Michael Dean",
        "London",
        "1",
        "980.00",
        "",
        "",
        "875.00",
        "875.00",
        "0",
        "64.81",
        "0",
        "810.19"
    ]
    [1] => 
    [
        "18.06.2016",
        "18.06.2016",
        "18.06.2016",
        "Tray 1",
        "Test Name",
        "Adam Richards",
        "London",
        "1",
        "980.00",
        "",
        "",
        "105.00",
        "105.00",
        "0",
        "7.78",
        "0",
        "97.22"
    ]...

我想检查数组键值是否在伦敦之后为1?

和第一个数组键一样,值的顺序如下:

...,"测试名称","Michael Dean","London","1",...

我该怎么做?

【问题讨论】:

  • 向我们展示您的尝试
  • 你可以使用循环并使用[7]数组的第7个元素来检查
  • @Rishi [7] 通常是第 8 个元素。或者可能不是,因为 php 数组是更多的哈希图。 :)

标签: php arrays array-key


【解决方案1】:

如果顺序始终相同,则可以循环遍历。

foreach ($array as $key => $value) {
    if ($value[4] == 'London' && $value[5] == 1) {
        echo '$array['.$key.'] has London and 1 as key 4 and 5';
    }
}

虽然您没有为子数组指定键,但它们仍然具有默认键,您可以使用这些键来获取您想要的值。

编辑

查看您的数组,我发现键的顺序没有逻辑。除非您为它们分配诸如town, id, date, name 之类的键,否则您将无法找到您要查找的值。

例如:

array(
    '0' => array(
        'name' => 'John Doe',
        'town' => 'London',
        'active' => 1,
    )

);

【讨论】:

    【解决方案2】:

    使用常规的foreach 循环来检查London 值是否后跟1

    // $arr is your initial array
    foreach ($arr as $k => $v) {
        if ($v[6] == 'London') {
            $hasValue = ($v[7] != 1)? "NOT" : "";
            echo "Item with key $k has 'London' which is $hasValue followed by 1". PHP_EOL;
        }
    }
    

    示例输出:

    Item with key 0 has 'London' which is  followed by 1
    Item with key 1 has 'London' which is  followed by 1
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 2019-06-26
      • 2017-11-26
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多