不確定我的措辭是否正確,但以下內容可以說明我正在努力實作更好的目標。
我有一個多維陣列,我想從陣列 foreach 中的最后一個索引中捕獲特定元素
大批:
[Something] => Array
(
[Something1] => Array
(
[0] => Array
(
[@attributes] => Array
(
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
[Something1.1] => Array
(
[Something1.1.1] => Array
(
[0] => Array
(
[DataID] => Data
[Date] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
[1] => Array
(
[DataID] => Data
[Date] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
[2] => Array (last returned)
(
[DataID] => Data
[DateLASTRETURNED] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
)
)
[Something1.2] => Array
(
[Something.1.2.1] => Array
(
[0] => Array
(
[DataID] => Data
[Date] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
[1] => Array
(
[DataID] => Data
[Date] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
[2] => Array (last returned)
(
[DataID] => Data
[DateLASTRETURNED] => YYYY-MM-DD
[DataID] => Data
[DataID] => Data
[DataID] => Data
[DataID] => Data
)
)
)
)
)
)
正如您在括號(最后回傳)中看到的那樣,我需要在 foreach "Something1.*) 中最后回傳的指定元素中的值 - 具體來說,該欄位保存日期 YYYY-MM-DD 并希望存盤到 $ 中在別處重復使用。
希望這是有道理的,期待一些幫助!
uj5u.com熱心網友回復:
你可以做這樣的事情。首先訪問直到所需的級別,然后選擇每個的最后一個陣列,檢查它是否是一個陣列,然后列印值“日期”。
假設示例中的多陣列存盤在名為 $array 的變數中:
foreach($array["something"]["Something1"] as $value) {
foreach($value as $value1){
if(is_array(end($value1))) {
echo(end($value1)["Date"]);
}
}
}
如果您的多陣列偏離您所指示的示例,也許您應該添加一些額外的驗證。
uj5u.com熱心網友回復:
如果您想從“Something1.*”中的每個元素中獲取最新元素。你可以嘗試這樣的事情:
$array = [
'Something' => [
'Something1' => [
[
"@attributes" => array(
'DataID_1' => "Data",
"DataID_2" => "Data",
"DataID_3" => "Data",
),
"Something1.1" => array(
"Something1.1.1" => array(
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD",
"DataID_2" => "data",
"DataID_3" => "data",
),
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD",
"DataID_2" => "data",
"DataID_3" => "data",
),
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD last",
"DataID_2" => "data",
"DataID_3" => "data",
),
),
),
"Something1.2" => array(
"Something1.2.1" => array(
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD",
"DataID_2" => "data",
"DataID_3" => "data",
),
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD",
"DataID_2" => "data",
"DataID_3" => "data",
),
array(
"DataID_1" => "data",
"Date" => "YYYY-MM-DD last",
"DataID_2" => "data",
"DataID_3" => "data",
),
),
),
],
],
],
];
$dates = [];
$something1 = $array['Something']['Something1'];
foreach ($something1 as $something_1) { // loop through 'Something1'
foreach ($something_1 as $key => $something_1_1) { // loop through each element of 'Something1'.
if (str_starts_with($key, 'Something1.')) { // if key starts with 'Something1.' PHP >= 8.0
foreach ($something_1_1 as $key => $something_1_1_1) {
$last_element = end($something_1_1_1); // get last element of array
$dates[] = $last_element['Date']; // OUTPUT: YYYY-MM-DD last
}
}
}
}
var_dump($dates); // This array will contain your dates.
// You can also use the following code to loop through dates:
foreach ($dates as $date) {
echo $date; // OUTPUT: YYYY-MM-DD last
}
//OR access the dates in the following way:
$first_date = $dates[0]; // get first date. and so on..
$last_date = $dates[count($dates) - 1]; // get last date.
請注意這些函式:
str_starts_with()自PHP8.0.
end()將陣列的內部指標設定為其最后一個元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/357423.html
