Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

236
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!