3 items random aus json file

Mein Code ist ein Beispiel. Ein in sich geschlossener Code. Ist nicht dein Code.
Und da steht zu $objLinkList: //Testdaten mit Objekten
Also, in meinem Beispiel simuliere ich das Auslesen der Daten aus einem XML mit Testdaten. In der Ausgabe siehst du dann, dass die Grundstruktur Deiner gleich ist. Es ist auch ein Objekt mit mehreren Objekten drin.

Darum, nochmals: Test das Beispiel mal mit PhpFiddle Main
Falls das Testen zu kompliziert ist, hier die Printscreens von meinem Test

Der Test-block einfügen auf run klicken
2020-01-23_120027.jpg

Die Testausgabe. Darim sieht man die 3 Testausgaben. Zuerst die simulierten Daten, dann die ausgewählten Keys und dann noch die Daten die zu den ausgewählten keys passen.
2020-01-23_120059.jpg


Also mehr erklärung brauchst du wirklich nicht.
 
Hmmm....also ich hab nun mal folgendes gemacht

Code:
$arrLinkList = (array) $linklist;

//3 beliebige Keys auswählen
$arrResultKeys = array_rand($arrLinkList, 3);
//ausgewählte Keys ausgeben
print_r($arrResultKeys);

//Anhand der Keys die Datensätze auswählen.
$arrResult = array_intersect_key($arrLinkList, array_flip($arrResultKeys));

print_r($arrResult);

angezeigt bekomme ich das

Array ( [0] => 11 [1] => 70 [2] => 123 ) Array ( )

kann leider trotzdem nichts damit anfangen.....
wie gesagt php neuling....wie wird sowas weiterverarbeitet?
ich weiß es einfach nicht..soviel wie ich auch lese ich verstehe es eben nicht, bräuchte mal jemanden der mir das ordentlich erklärt...
 
Die erste Ausgabe sind die ausgewählten Keys
Dass der 2te Array leer ist, das verwundert mich jetzt.

Versuchs mal damit:
PHP:
//Anhand der Keys die Datensätze auswählen.
//Wird abgelöst durch di unten stehende Schleife:  $arrResult = array_intersect_key($arrLinkList, array_flip($arrResultKeys));
$arrResult = array();
foreach ($arrResultKeys as $idx){
    $arrResult[] = $arrLinkList[$idx];
}
 
Also hab das jetzt nochmal ausprobiert

PHP:
print_r($arrResultKeys);

foreach ($arrResultKeys as $idx){
    $arrResult[] = $arrLinkList[$idx];

print_r($arrResult);
  }

bis arrResultkeys scheint es erstmal zu funktionieren,

Code:
Array ( [0] => 21 [1] => 74 [2] => 162 )

die Werte ändern sich auch nach jedem Aufruf.....

arrResult zeigt folgendes:

Code:
Array (    [0] => )
Array (    [0] =>     [1] => )
Array (    [0] =>     [1] =>     [2] => )

? Irgendwie alles leer
 
Kannst du auf php 7.2 updaten? Würde sich in dem Fall lohnen

Neuer Versuch. Umd ie ausgewürfelten Einträge herauszulesen greifen wir mal direkt auf die Originalliste
PHP:
$arrResult = array();
foreach ($arrResultKeys as $idx){
    $arrResult[] = $linklist->{(string) $idx};
}
 
Also ich habe das nun mit var_dump mal anzeigen lassen und ich denke in Array(3) stehen die richtigen daten nun drin...aber wie genau kann ich das jetzt abrufen.
 

Anhänge

  • array.txt
    3,6 KB · Aufrufe: 2
Array 3 ist j ader $arrResult am Schluss. Die anderen 2 Ausgaben sind nur, weil du den print_r innerhalb der Schleife hast. Sind also nur Zwischenschritte.
Das sind deine 3 Einträge, die du ausgewürfelt hast. Über diesen kannst du dann deine foreach-Schleife setzen

PHP:
<?php foreach($arrResult as $key => $item): ?>
 
ach ja so hatte ich das ja schon aber da stand $linklist drin.....einwandfrei jetzt funktioniert es genauso wie ich mir das vorgestellt habe. Gerlernt hab ich auch wieder was.
Vielen Dank :)
 
Zurück