我正在嘗試遍歷每個鍵,但我面臨每個回圈內部重復相同值的問題
請注意,我們應該保持相同的代碼結構多個 foreach 它的要求我已經在這里發布了這個問題但是沒有得到解決方案而不是解決方案整個新代碼作為答案強加給我并且沒有人真正照顧它
這是我當前代碼和結果的示例(單擊此處)
到目前為止,這是我的代碼
<?php
$data2 = array(
'category_name' => '33287*100*prescription*1,32457*1250*lab*1'
);
$result = array('0' => (object)$data2);
foreach ($result as $key => $category) {
$category_name = explode(',', $category->category_name);
}
$newresults=[];
foreach ($category_name as $key) {
$category->category_name = $key;
$newresults[]=$category;
}
$result=$newresults;
$newresults=[];
$category->items_count = 0;
foreach ($result as $key => $value) {
list($sale_key, $sale_value) = explode('*', $value->category_name);
// $category->items_count = count($sale_value);
$newresults[]=$category;
}
$result=$newresults;
我得到這樣的錯誤結果
Array
(
[0] => stdClass Object
(
[category_name] => 33287*100*prescription*1
)
[1] => stdClass Object
(
[category_name] => 33287*100*prescription*1
)
)
uj5u.com熱心網友回復:
如前所述,因為您正在重用變數名,并且在它們的范圍可能不正確或不被接受時也使用它們,所以您會造成一些混亂。
下面的代碼將底部回圈帶入頂部回圈,因為那是背景關系真正存在的地方。創建一個臨時回圈只會增加潛在的混亂。如果這不適用于附加邏輯,則需要進行更多更改。我還更改了一堆變數名,希望能讓事情變得更明顯。有關詳細資訊,請參閱代碼中的注釋。
$reporting_data = array(
'category_name' => '33287*100*prescription*1,32457*1250*lab*1,32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1,32468*950*lab*1,32470*950*lab*1,33291*2500*lab*1,33292*2500*lab*1,47516*2000*lab*1,49209*0*lab*1,56835*2400*lab*1,56836*2400*lab*1',
'patient' => '28370',
'date' => 1643030497,
'ref' => '371',
);
// Create array of objects
$reporting_data_as_objects[] = (object)$reporting_data;
$results = [];
foreach ($reporting_data_as_objects as &$obj) {
// Setup base data that is shared across all items
$obj->reception_data_sum = 0;
$obj->references_data_sum = 0;
$obj->actual_price = 0;
$category_names = explode(',', $obj->category_name);
// Loop over the comma-delimited parts of category_name
foreach ($category_names as $category_name) {
// Clone our template object
$tmp = clone $obj;
// The second item of the asterisk-delimted field is the price
// We used $_ to indicate that we aren't interested in the first item.
list($_, $sale_value) = explode('*', $category_name);
// Set object-specific fields on our clone
$tmp->category_name = $category_name;
$tmp->actual_price = (int)$sale_value;
// Add the clone to the array
$results[] = $tmp;
}
}
// Always unset by-ref variables of a foreach
unset($obj);
print_r($results);
此處演示:https ://3v4l.org/95KAQ
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423038.html
標籤:
上一篇:如何在單個陣列中獲取陣列資料
