【问题标题】:How to get previous and next array value in php?如何在php中获取上一个和下一个数组值?
【发布时间】:2021-09-26 10:41:29
【问题描述】:

所以我使用的是 RapidAPI 的 API,我在 json_encode() 之后得到下面的数组 -

Array
(
    [00:00:00] => Array
        (
            [name] => Arr Name 1
            [other-details] => Arr Desscription 1
            [type] => Arr Type 1
        )

    [00:30:00] => Array
        (
            [name] => Arr Name 2
            [other-details] => Arr Desscription 2
            [type] => Arr Type 2
        )
)

现在您已经看到了我从现在开始得到的结构,请注意我得到的只是开始时间,即 [00:00:00],而不是结束时间,即它应该有是[00:30:00]结束时间。

但是使用

foreach ($arr as $key => $value) { 
}

我得到了

  • [00:00:00]
  • [00:30:00]

正如您在 foreach 中所期望的那样,我尝试在 foreach 中使用 array_slice 使用 foreach,但失败了。

所以我想要的是

  • 开始时间 - 结束时间
  • [00:00:00] [00:30:00]
  • [00:30:00] .....

【问题讨论】:

标签: php arrays json arraylist php-curl


【解决方案1】:

我希望这是您正在寻找的:

<?php

// sample data
$data = [
    
    "00:00:00" => [
        "name" => "Test name",
        "details" => "Test details",
        "type" => "Test type"
    ],
    
    "00:30:00" => [
        "name" => "Test name",
        "details" => "Test details",
        "type" => "Test type"
    ],
    
    "00:60:00" => [
        "name" => "Test name",
        "details" => "Test details",
        "type" => "Test type"
    ]
    
];

$timeslots = [];

foreach(array_chunk($data, 2, TRUE) as $key => $value) {
    
    $timeslots[] = array_keys($value);
}

print_r($timeslots);

?>

输出:

Array
(
    [0] => Array
        (
            [0] => 00:00:00
            [1] => 00:30:00
        )

    [1] => Array
        (
            [0] => 00:60:00
        )

)

【讨论】:

  • 嗯,让我解决它。 ☹️
  • 请添加如何同时获取所有值,例如 - 00:00:00 00:00:30 Arr Name 1 Arr Desc 1 Arr type 1 .....
【解决方案2】:

您可以使用 array_keys 从数组中获取并循环键。

在循环中,打印开始时间,如果存在则只打印结束时间,方法是检查数组中下一个值的键是否存在。

$a = [
    '00:00:00' => [
        'name' => 'Arr Name 1',
        'other-details' => 'Arr Desscription 1',
        'type' => 'Arr Type 1'
    ],
    '00:00:30' => [
        'name' => 'Arr Name 2',
        'other-details' => 'Arr Desscription 2',
        'type' => 'Arr Type 2'
    ],
    '00:01:00' => [
        'name' => 'Arr Name 3',
        'other-details' => 'Arr Desscription 3',
        'type' => 'Arr Type 3'
    ],
    '00:01:30' => [
        'name' => 'Arr Name 4',
        'other-details' => 'Arr Desscription 4',
        'type' => 'Arr Type 4'
    ]
];

$keys = array_keys($a);
for ($i = 0; $i < count($keys); $i++) {
    $result = $keys[$i];
    if (array_key_exists($i+1, $keys)) {
        $result .= " " . $keys[$i + 1];
    }
    echo $result . PHP_EOL;
}

输出

00:00:00 00:00:30
00:00:30 00:01:00
00:01:00 00:01:30
00:01:30

查看PHP demo

【讨论】:

  • 请分享如何获取密钥以及 00:00:00 00:00:30 Arr Name 1 Arr Desc 1 Arr type 1 等值
  • @web90 你的意思是这样吗? 3v4l.org/mBGn9
猜你喜欢
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 2019-02-13
  • 2018-03-16
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多