php - 面試問題:文章清單和分類清單(都是二維),如果透過一次循環取出文章對應的分類
迷茫
迷茫 2017-06-20 10:07:33
0
1
690

P.S. : 都是二維數組(數字索引)

另外想問:考察的點到底在哪裡?聯想面試當時的上下文,可能是考某個函數?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(1)
Peter_Zhu

估計是考試array_column函數。

# 数据准备
$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');
# 经过上面这步之后,新的$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函数将一个二维矩阵型的数组中的列拆出来,输出一维数组。
# 这个函数有三个参数,第一个参数为源数组
# 第二个参数为取出来当键值的列名,比如这个例子中对$categories可以取'id'或者'name',当然也可以用NULL,表示将整个值(此处为['id' => 1, 'name' => '分类1']之类)原封不动作为新的值
# 第三个参数为取出来当键名的列,可选。如果不给或者为NULL,则自动编号。
#
# 上面做的这个array_column操作,是让之后遍历文章时,可以通过里面的category_id列的值直接找到对应的$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']]
# ];
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!