首页 > 解决方案 > 如何在多维数组中找到具有特定值的第一个元素?

问题描述

$userarray = array(
    array(
        'uid' => '100',
        'extraid' => 2,
        'name' => 'Sandra Shush',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '5465',
        'extraid' => 2,
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '40489',
        'extraid' => 2,
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    ),
    array(
        'uid' => '512',
        'extraid' => 3,
        'name' => 'Hillary',
        'pic_square' => 'urlof409'
    ),
    array(
        'uid' => '792',
        'extraid' => 3,
        'name' => 'James',
        'pic_square' => 'urlof489'
    ),
);

$all_category = $this->common->getAll(TABLE_CONF_CATEGORIES, 'year', $year);
foreach($all_category as $cats) {
                    $key = array_search($cats->id, array_column($userarray , 'extraid'));echo $key;
                    if($key) {
                        $userarray[$key]->category_name = $cats->category_name;
                    }
}

在这个数组中,我需要获取 extraid 的每个第一个元素。即如果extraid = 2,这里有3 个元素,所以我需要获取第一个数组。如果 extraid = 3,那么那里有 2 个数组,& 我需要获取第一个数组,等等。

此 all_category 是另一个数组,其中存在相应的 extraid 值,因此对其进行循环,并进行数组搜索以找到该值。

标签: phpmysqlarrayssortingmultidimensional-array

解决方案


<?php
$userarray = [
    [
        'uid' => '100',
        'extraid' => 2,
        'name' => 'Sandra Shush',
        'pic_square' => 'urlof100',
    ],
    [
        'uid' => '5465',
        'extraid' => 2,
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100',
    ],
    [
        'uid' => '40489',
        'extraid' => 2,
        'name' => 'Michael',
        'pic_square' => 'urlof40489',
    ],
    [
        'uid' => '512',
        'extraid' => 3,
        'name' => 'Hillary',
        'pic_square' => 'urlof409',
    ],
    [
        'uid' => '792',
        'extraid' => 3,
        'name' => 'James',
        'pic_square' => 'urlof489',
    ],
];

// final output array
$all_category = [];

// list of already set ids
$ids = [];

foreach($userarray as $user) {
    if( !isset($ids[$user['extraid']]) ){
        $ids[$user['extraid']] = true;
        $all_category[]= $user;
    }
}


print_r($all_category);
  1. 循环遍历你的数组
  2. 检查 extraid 是否已经在您的数组中
  3. 如果是则移动到下一个数组元素
  4. 如果不是,则将其添加到最终输出数组中,并将 id 存储在我们已经看到的 id 列表中。

推荐阅读