search in array voor id en return value
Ik heb een array met de volgende gegevens.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
array(7) {
[0]=> array(3) { ["swapID"]=> string(1) "1" ["swapName"]=> string(3) "2.5" ["swapValue"]=> string(10) "2500000000" }
[1]=> array(3) { ["swapID"]=> string(1) "2" ["swapName"]=> string(1) "5" ["swapValue"]=> string(10) "5000000000" }
[2]=> array(3) { ["swapID"]=> string(1) "3" ["swapName"]=> string(2) "10" ["swapValue"]=> string(11) "10000000000" }
[3]=> array(3) { ["swapID"]=> string(1) "4" ["swapName"]=> string(2) "15" ["swapValue"]=> string(11) "15000000000" }
[4]=> array(3) { ["swapID"]=> string(1) "5" ["swapName"]=> string(2) "20" ["swapValue"]=> string(11) "20000000000" }
[5]=> array(3) { ["swapID"]=> string(1) "6" ["swapName"]=> string(2) "40" ["swapValue"]=> string(11) "40000000000" }
[6]=> array(3) { ["swapID"]=> string(1) "7" ["swapName"]=> string(2) "50" ["swapValue"]=> string(11) "50000000000" } }
[0]=> array(3) { ["swapID"]=> string(1) "1" ["swapName"]=> string(3) "2.5" ["swapValue"]=> string(10) "2500000000" }
[1]=> array(3) { ["swapID"]=> string(1) "2" ["swapName"]=> string(1) "5" ["swapValue"]=> string(10) "5000000000" }
[2]=> array(3) { ["swapID"]=> string(1) "3" ["swapName"]=> string(2) "10" ["swapValue"]=> string(11) "10000000000" }
[3]=> array(3) { ["swapID"]=> string(1) "4" ["swapName"]=> string(2) "15" ["swapValue"]=> string(11) "15000000000" }
[4]=> array(3) { ["swapID"]=> string(1) "5" ["swapName"]=> string(2) "20" ["swapValue"]=> string(11) "20000000000" }
[5]=> array(3) { ["swapID"]=> string(1) "6" ["swapName"]=> string(2) "40" ["swapValue"]=> string(11) "40000000000" }
[6]=> array(3) { ["swapID"]=> string(1) "7" ["swapName"]=> string(2) "50" ["swapValue"]=> string(11) "50000000000" } }
Wat ik wil en waar ik dan ook niet uitkom is het volgende
Ik dien te controleren of de swapID voorkomt in de array en dan van dat ID de swapName terug te geven.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
//$swap_id = gezochte ID
//$array = bovenstaande array
$name = null;
foreach($array as $record) if($record['swapID'] == $swap_id){
$name = $record['swapName'];
break; //ID gevonden, stap nu uit de foreach
}
//als het swapID is gevonden, dan staat de bijbehorende swapName nu in $name
//anders is $name nog steeds leeg/null
//$array = bovenstaande array
$name = null;
foreach($array as $record) if($record['swapID'] == $swap_id){
$name = $record['swapName'];
break; //ID gevonden, stap nu uit de foreach
}
//als het swapID is gevonden, dan staat de bijbehorende swapName nu in $name
//anders is $name nog steeds leeg/null
Als het swapID uniek is is de aanpak van @Rob een mogelijke oplossing... maar als het swapID uniek is, waarom zorg je er dan niet voor dat deze direct als key wordt gebruikt in dat array, dan hoef je in eerste instantie niet te zoeken...
zelf had ik al een oplossing gevonden voor wat ik wil.
Dat van jou neem ik wel mee zodat ik het kan gebruiken als ik het inderdaad dan nodig heb.
Code (php)
1
2
3
4
5
2
3
4
5
public function GetSwap($swapID) {
array_unshift($this->Swaps, '');
unset($this->Swaps[0]);
return $this->Swaps[$swapID]['swapName'];
}
array_unshift($this->Swaps, '');
unset($this->Swaps[0]);
return $this->Swaps[$swapID]['swapName'];
}
Heb bovenstaande code omdat ik het zo aanroep.
Code (php)
1
<div class="rTableCell"><h3>Current players in the '.$GoldSwap->GetSwap($_GET['p']).'B Swap</h3></div>
en dus er geen 0 in voorkomt als id.
Waarom unshift je als je direct daarna het nieuwe element toch verwijdert? De key is niet gegarandeerd gelijk aan id - 1. Dat zal alleen zo zijn in een schone database waar nooit wat uit verwijderd is. En zelfs dan niet gegarandeerd.
Omdat dit werkt. en ook werd aangegeven op stackoverflow.
Heb nu het een en ander aangepast zoals Thomas het zei. Id gelijk als key meegeven.
Als dit op SO werd aangegeven is het tijd om dat antwoord te downvoten. Het is immers een schijnoplossing.