Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
¿Cómo encontrar el primer elemento con un valor específico en una matriz multidimensional?
$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; } }

En esta matriz, necesito obtener cada primer elemento de extraid. es decir, si extraid = 2, aquí hay 3 elementos, así que necesito obtener la primera matriz. Si extraid = 3, entonces hay 2 matrices allí, y necesito buscar la primera matriz, y así sucesivamente.

esta categoría all_category es otra matriz en la que están presentes los valores de extraid correspondientes, por lo que hizo un bucle e hizo una búsqueda de matriz para encontrar el valor.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

<?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. Bucle a través de su matriz
  2. Compruebe si el extraid ya está en su matriz
  3. Si es así, muévase al siguiente elemento de la matriz
  4. Si no es así, agréguelo a su matriz de salida final y almacene la identificación en nuestra lista de identificaciones que ya hemos visto.
over 4 years ago · Santiago Trujillo Denunciar

0

Solución para el caso de que varios campos deban ser únicos. Único aquí significa que el contenido de todos los campos debe coincidir. La propia matriz de entrada se reduce.

 $fieldNames = ['extraid']; $filterCols = []; $flipFields = array_flip($fieldNames); foreach($userarray as $key => $row){ $fieldsFromRow = array_intersect_key($row,$flipFields); if(in_array($fieldsFromRow, $filterCols)) { unset($userarray[$key]); } else { $filterCols[] = $fieldsFromRow; } } $userarray = array_values($userarray);

El código proviene de la clase TableArray . Con esta clase, la solución se ve así:

 $all_category = TableArray::create($userarray) ->filterUnique(['extraid']) ->fetchAll() ;

Al usar la clase, la matriz de entrada se conserva.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda