我在 PHP 中得到了以下陣列:
$data[] = array('Slug' => 'jan', 'Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data[] = array('Slug' => 'kjell', 'Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data[] = array('Slug' => 'bjarne', 'Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data[] = array('Slug' => 'monika', 'Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');
如何輸出“Slug = Jan”的“Jahrgang”的值?
如何將“Slug = Jan”的“Jahrgang”從 1981 年更改為 1982 年?
沒有foreach有什么辦法嗎?
太感謝了!
uj5u.com熱心網友回復:
它可以用pair來完成,array_search如下array_column所示:
$key = array_search('jan', array_column($data, 'Slug'));
array_column僅回傳具有給定鍵的單維陣列,在這種情況下Slug,然后array_search在縮減陣列中回傳該值的鍵,并且應該與主陣列中的相同。因此,對于問題,它將是:
echo $data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'];
$data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'] = '1982';
uj5u.com熱心網友回復:
我會選擇通過將陣列鍵設定為 Slug 值來稍微重構資料以便于訪問。
$data['jan'] = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data['kjell'] = array('Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data['bjarne'] = array('Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data['monika'] = array('Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');
這將允許您使用該鍵訪問或設定任何值。
//access
$info = $data['jan']; //array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
//set
$data['jan']['Name'] = 'Not Jan';
//loop
foreach($data as $slug => $info) {
//$info = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
}
在您的情況下,此方法的另一個優點是它確保每個“Slug”都是唯一的,因為陣列不能包含重復的鍵。
uj5u.com熱心網友回復:
您可以像這樣使用“function”而不是“nested foreach”:
function replace($data,$index){
// count array length
$num = count($data);
if($index < $num){
if($data[$index]['Slug'] === 'jan'){
$a = [ $index => [ "Jahrgang" => "1982" ] ] ;
// replace new array with new values
$re = array_replace($data,$a);
return $re;
}else{
$index ;
check($data,$index);
}
}
}
replace($data,0);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481260.html
下一篇:創建一個函式findItems
