Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda