Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:b0c7:f49a:1af4:4445...–

peter
PHP › Jak pracovat s array?
15. 7. 2021   #388136

V sql by sis udelal indexy nad databazi.
Tak si udelej indexy pro to pole, ne?

Nedavno jsem psal jednomu cloveku to same. https://www.itnetwork.cz/…0e5fcdb97a96

<?php
$list = array(
array(
    'Id' => 64899,
    'IdP' => 37671,
    'Name' => "Auto-moto"
),
array
(
    'Id' => 64868,
    'IdP' => 64899,
    'Name' => "Autochladničky"
),
array
(
    'Id' => 64876,
    'IdP' => 64868,
    'Name' => "Kompresorové autochladničky"
)
);

$out = array();
$pom = array();

echo '<pre>';

foreach($list as $row)
{
//var_dump($row);
list( $id, $idP, $name ) = array($row['Id'], $row['IdP'], $row['Name']);//zde
//var_dump( $id, $idP );
if (isset($pom[ $idP ]))
        {
        $pom[ $idP ][ $id ] = array( 'IdP'=>$idP, 'Name'=>$name );//zde
        $pom[ $id ] = &$pom[ $idP ][ $id ];
        }
else    {
        $out[ $id ] = array( 'IdP'=>$idP, 'Name'=>$name );//zde
        $pom[ $id ] = &$out[ $id ];
        }
}

var_dump($out);
// $pom[ $idP ][ $id ] = array($idP, $name); slo by pouzit jen toto, ale nevim, zda 0 a 1 nemas jako kategorii
// $pom[ $idP ][ $id ] = $row; // nebo dat tam primo cely row
// $pom[ $idP ][ $id ] = &$row; // nebo dat tam primo cely row jako pointer
// totez u else

foreach($list as $row)
{
$path = array();
$id = $row['Id'];
for (;isset($pom[$id]);)
        {
        $path[] = $pom[$id]['Name'];
        $id = $pom[$id]['IdP'];
        }
echo implode(" > ", array_reverse($path))."\n";
}
?>


C:\xampp\htdocs\www\parse-category\parse-category-from-array.php:43:
array (size=1)
  64899 =>
    array (size=3)
      'IdP' => int 37671
      'Name' => string 'Auto-moto' (length=9)
      64868 =>
        array (size=3)
          'IdP' => int 64899
          'Name' => string 'Autochladničky' (length=15)
          64876 =>
            array (size=2)
              ...

Auto-moto
Auto-moto > Autochladničky
Auto-moto > Autochladničky > Kompresorové autochladničky
//Z tveho pole si cyklem vygenerujes pole se strukturou
$index_pole = array ($name1=>$row1, $name2=>$row2)

//A v tomto poli uz umis hledat, ne?
$index_pole['carp']['id']

Jestli hledas nejakou super bomba funkci, tak zkus array_filter. Myslim, ze v komentarich je neco podobneho. ale z example na even-odd by to asi slo taky napsat.
https://www.php.net/array_filter

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý