Traženje podatka po ključu u multidimenzionalnom arrayu

Znači imam sličan array:

Array
(
[0] => Array (5, “TEST1”, “nešto1”)
[1] => Array (5, “TEST2”, “nešto2”)
[2] => Array (6, “TEST3”, “nešto3”)
[3] => Array (6, “TEST4”, “nešto4”)
[4] => Array (6, “TEST5”, “nešto5”)
)

kako da najjednostavnije izvadim podatke gdje je ovaj broj u drugom arrayu jednak 5?

Ovako nešto?

[php]<?php

$array[] = array(5, ‘Test’, ‘Test’);
$array[] = array(5, ‘Test2’, ‘Test22’);
$array[] = array(6, ‘Test3’, ‘Test32’);
$array[] = array(6, ‘Test4’, ‘Test42’);
$array[] = array(6, ‘Test5’, ‘Test52’);

foreach ($array as $key => $val)
{
if ($val[0] == 5)
{
echo $val[1] . ’ - ’ . $val[2] . ‘
’;
}
}
[/php]

A ako ti 5 nije u prvoj vrijednosti, onda staviš umjesto
[php]if ($val[0] == 5)[/php]

ovo:

[php]if (array_key_exists(5, array_flip($val) === TRUE)[/php]

To sam i ja napravio, mislio sam neki bolji način da ne loopam array svaki put bezveze!

Pa postoji. Sortiraš pod-nizove po tom ključu, kod umetanja paziš da poredak ostane sačuvan i onda pretražuješ binarnim pretraživanjem.

Neke druge tehnike, pogodne u drugim situacijama bi bio B-tree ili binarno stablo.

Takve stvari su “kutija s alatima” programera, a uče se kroz udžbenike o programiranju ili na predavanjima. Za razliku od razno-raznih popularnih “tutorijala za PHP”.

Zahvaljujem na odgovoru, probat ću nešto izmozgat! Slažem se da ako kreneš od skriptnih jezika (PHP) zapravo nemaš blage veze o programiranju!

A možeš i složiti bez loopanja ali onda mora biti malo složenija logika iza dizajna arraya.
Recimo tu vrijednost koju želiš koristiti za dohvaćanje bi koristio kao key.

Recimo tvoj problem:
$glavniArray = array();
$glavniArray[5]=array();
$glavniArray[5][]=array(5,“test”,“test”);
$glavniArray[5][]=array(5,“test2”,“test2”);

echo $glavniArray[5][0][1]

Tu niti nebi trebao vrijednost 5 spremati.
Dadu se neki problemi riješiti i pojednostavniti sa pristupom da key od arraya nije samo key već i konkretni podatak. No primjetio sam da dobar dio programera ne koristi takav pristup.

PHP-ovi nizovi su “asocijativni”, ako se ne varam? Je li moguće reći nešto poput $niz[“jabuka”] = “kruška”?

Vjerovatno nije, no recimo da bih upotrijebio slično da vidim neke prednosti.
Eto na primjer sortiranje nad arrayom bi bilo jednostavnije u njegovom slučaju ako koristi taj broj koji mu treba kao key umjesto da ide sortirati prema broju koji se nalazi unutar array.
To je kompliciranije za izvesti.

Naravno da je moguce. Sintaksa u tvom slucaju je ispravna, ali pozeljnije je koristiti

$ucenik = array(
“ime” => “Marko”,
“ocjena” => “odlican”
);

Varijablama se kasnije pristupa preko imena, npr. $ucenik[“ime”], $ucenik[“ocjena”] , itd.

[quote=“gorrc”]A možeš i složiti bez loopanja ali onda mora biti malo složenija logika iza dizajna arraya.
Recimo tu vrijednost koju želiš koristiti za dohvaćanje bi koristio kao key.

Recimo tvoj problem:
$glavniArray = array();
$glavniArray[5]=array();
$glavniArray[5][]=array(5,“test”,“test”);
$glavniArray[5][]=array(5,“test2”,“test2”);

echo $glavniArray[5][0][1]

Tu niti nebi trebao vrijednost 5 spremati.
Dadu se neki problemi riješiti i pojednostavniti sa pristupom da key od arraya nije samo key već i konkretni podatak. No primjetio sam da dobar dio programera ne koristi takav pristup.[/quote]

Ma rado bi tako napravio ali ne možeš imat dva ista key-a!


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja