使用PHP从数组中获取键的值

时间:2019-02-27 07:43:43

标签: php

我的阵列是

Array
(
    [0] => Array
        (
            [week_startDate] => 2019-02-01
            [week_endDate] => 2019-02-03
        )

    [1] => Array
        (
            [week_startDate] => 2019-02-04
            [week_endDate] => 2019-02-10
        )

    [2] => Array
        (
            [week_startDate] => 2019-02-11
            [week_endDate] => 2019-02-17
        )

    [3] => Array
        (
            [week_startDate] => 2019-02-18
            [week_endDate] => 2019-02-24
        )

    [4] => Array
        (
            [week_startDate] => 2019-02-25
            [week_endDate] => 2019-02-28
        )

)

我想在匹配week_startDate时获取week_endDate的键值。 假设我的week_startDate是

案例1的期望值: week_startDate是数组中的2019-02-01匹配项,然后我想返回2019-02-03

case2期望值: week_startDate是数组中的2019-02-18匹配项,然后我想返回2019-02-24

是否可以使用数组函数或其他任何方式?

7 个答案:

答案 0 :(得分:2)

您可以在week_startDate列上使用array_search(使用array_column提取)来找到该值的键,然后使用该键返回week_endDate

$startDate = '2019-02-01';
$k = array_search($startDate, array_column($array, 'week_startDate'));
if ($k !== false) {
    $endDate = $array[$k]['week_endDate'];
}
else {
    echo "$startDate not found!";
}

Demo on 3v4l.org

答案 1 :(得分:1)

$expectedDate = '2019-02-11';
foreach($arr as $key => $val){
  if($expectedDate ==$val['week_startDate']){
   return $val['week_endDate'];
  }
}

另一种解决方案

$startDate = '2019-02-01';
$k = array_search($startDate, array_column($array, 'week_startDate'));
if ($k !== false) {
   echo $array[$k]['week_endDate'];
}

答案 2 :(得分:1)

你在这里

$search_on_me = array(
    array(
        'week_startDate' => '2019-02-01',
        'week_endDate' => '2019-02-03'
    ),

    array(
        'week_startDate' => '2019-02-04',
        'week_endDate' => '2019-02-10'
    ),

    array(
        'week_startDate' => '2019-02-11',
        'week_endDate' => '2019-02-17'
    )
);

$key = array_search('2019-02-01', array_column($search_on_me, 'week_startDate'));

echo "week_endDate of 2019-02-01: ".$search_on_me[$key]['week_endDate'];

答案 3 :(得分:0)

是的,您可以执行以下操作。但是不确定要哪个。因此,您可以检查以下内容:

foreach ($array as $arr) {
    if(array_key_exists('week_startDate', $arr)){
        return $arr["week_endDate"];
    }
}

或者您可以检查以下内容:

foreach ($array as $arr) {
    if($arr["week_startDate"] == "2019-02-01"){
        return $arr["week_endDate"];
    }
}

答案 4 :(得分:0)

$array = [
    [
        'week_startDate' => '2019-02-01',
        'week_endDate' => '2019-02-03'
    ], [
        'week_startDate' => '2019-02-04',
        'week_endDate' => '2019-02-10'
    ], [
        'week_startDate' => '2019-02-11',
        'week_endDate' => '2019-02-17'
    ], [
        'week_startDate' => '2019-02-18',
        'week_endDate' => '2019-02-24'
    ], [
        'week_startDate' => '2019-02-25',
        'week_endDate' => '2019-02-28'
    ]
];

要获取密钥:

$key = array_search('2019-02-01', array_column($array, 'week_startDate'));

要获取值:

$value = $array[$key]['week_endDate'];

答案 5 :(得分:0)

您可以使用array_column获取开始日期的数组。

$startDates = array_column($your_array, 'week_startDate');

包含您的$ needle日期的项目的密钥可以通过array_search找到。

$key = array_search($needle, $startDates);

如果未找到$ needle,则array_search的返回值可以为false。确保检查它是否为0或false!

if ($key !== false) {
 $endDate = $your_array[$key]['week_endDate'];
}

答案 6 :(得分:0)

我正在使用数组指针来指向每个元素

reset($myarray);
while ($curr = current($myarray))
{

  $key = key($myarray); // Get key of pointing array
  if ( ( $curr['week_startDate'] == $curr['week_endDate'] ) && $curr['week_startDate'] !== '2019-02-01' && $curr['week_startDate'] !== '2019-02-18' )
    print_r($curr);

  next($myarray);
}
相关问题