P.S.: Es sind alles zweidimensionale Arrays (numerischer Index)
Noch eine Frage: Wo ist die Kontrollstelle? Der Kontext des Lenovo-Interviews war vielleicht ein Funktionstest?
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
估計(jì)是考array_column
函數(shù)。
# 數(shù)據(jù)準(zhǔn)備
$articles = [
['id' => 1, 'name' => '文章1', 'category_id' => 3],
['id' => 2, 'name' => '文章2', 'category_id' => 5],
['id' => 3, 'name' => '文章3', 'category_id' => 6]
];
$categories = [
['id' => 1, 'name' => '分類1'],
['id' => 2, 'name' => '分類2'],
['id' => 3, 'name' => '分類3'],
['id' => 4, 'name' => '分類4'],
['id' => 5, 'name' => '分類5'],
['id' => 6, 'name' => '分類6']
];
$categories = array_column($categories, NULL, 'id');
# 經(jīng)過上面這步之后,新的$categories值如下:
# [
# '1' => ['id' => 1, 'name' => '分類1'],
# '2' => ['id' => 2, 'name' => '分類2'],
# '3' => ['id' => 3, 'name' => '分類3'],
# '4' => ['id' => 4, 'name' => '分類4'],
# '5' => ['id' => 5, 'name' => '分類5'],
# '6' => ['id' => 6, 'name' => '分類6']
# ];
# array_column函數(shù)將一個(gè)二維矩陣型的數(shù)組中的列拆出來,輸出一維數(shù)組。
# 這個(gè)函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)為源數(shù)組
# 第二個(gè)參數(shù)為取出來當(dāng)鍵值的列名,比如這個(gè)例子中對(duì)$categories可以取'id'或者'name',當(dāng)然也可以用NULL,表示將整個(gè)值(此處為['id' => 1, 'name' => '分類1']之類)原封不動(dòng)作為新的值
# 第三個(gè)參數(shù)為取出來當(dāng)鍵名的列,可選。如果不給或者為NULL,則自動(dòng)編號(hào)。
#
# 上面做的這個(gè)array_column操作,是讓之后遍歷文章時(shí),可以通過里面的category_id列的值直接找到對(duì)應(yīng)的$categories里面的值。
foreach($articles as &$article) {
$cat_id = $article['category_id']; // 這步可以嵌入下面的代碼,是為了看起來沒那么多嵌套而已
$article['category'] = $categories[$cat_id];
}
# 新的$articles:
# [
# ['id' => 1, 'name' => '文章1', 'category_id' => 3, 'category' => ['id' => 3, 'name' => '分類3']],
# ['id' => 2, 'name' => '文章2', 'category_id' => 5, 'category' => ['id' => 5, 'name' => '分類5']],
# ['id' => 3, 'name' => '文章3', 'category_id' => 6, 'category' => ['id' => 6, 'name' => '分類6']]
# ];