Array im Array auslesen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

loddarmattheus

Erfahrenes Mitglied
Hallo Jungs,
ich stelle mich leider mal wieder zu glatt an und bitte um einen kurzen Tipp. Ich habe hier ein Array, welches unter "text" mal nur einen Text enthält (1. Eintrag) oder aber auch ein weiteres Array (2. Eintrag).

[
{
"id": 2727,
"type": "message",
"date": "2019-11-25T11:20:08",
"edited": "1970-01-01T01:00:00",
"from": "Max Meier",
"from_id": 412755540,
"forwarded_from": "Mentor-Box",
"text": "DLT is pumping as well, keep an eye, current price 550 and its a good buy long term"
},
{
"id": 2726,
"type": "message",
"date": "2019-11-25T11:20:05",
"edited": "1970-01-01T01:00:00",
"from": "Max Meier",
"from_id": 412755540,
"forwarded_from": "Mentor-Box",
"text": [
"Binance\n",
{
"type": "hashtag",
"text": "#DLT"
},
"/BTC Take-Profit target 1 ✅\nProfit: 6.0976% \nPeriod: 12 Minutes ⏰"
]
}
]

Auf den reinen Text im 1. Eintrag und auch auf das Array im 2. Eintrag (hier mit var_dump) kann ich zwar zugreifen, aber die Werte im 2. Eintrag nicht separieren.

PHP:
$array = json_decode($data, true);

foreach($array as $row)
{
    if($row['from_id'] == "412755540")
    {
    echo $row['id'].  "\n";
    
        if (is_array($row['text']))
            {
                $array2 = $row['text'];
                var_dump($array2);
                echo "<br /><br />";
            }
        else         
            echo $row['text']. "<br />";       
    }
}

Die Ausgabe beim Eintrag 2 sieht dann so aus:

PHP:
2726 array(3) { [0]=> string(8) "Binance " [1]=> array(2) { ["type"]=> string(7) "hashtag" ["text"]=> string(4) "#DLT" } [2]=> string(73) "/BTC Take-Profit target 1 ✅ Profit: 6.0976%  Period: 12 Minutes ⏰" }

Mein Ziel ist es, dass ich die Werte "Binance", "hashtag", "#DLT" und "/BTC Take-Profit target 1 ✅\nProfit: 6.0976% \nPeriod: 12 Minutes ⏰"
irgendwie mit array2['type'] oder so ausgeben kann, wenn das irgendwie geht.
 

Sempervivum

Erfahrenes Mitglied
Du musst berücksichtigen, dass das $array2 verschachtelt ist, d. h. bei dem zweiten Element handelt es sich wiederum um ein ass. Array. So funktioniert es bei mir:
Code:
foreach ($array as $row) {
    if ($row['from_id'] == "412755540") {
        echo $row['id'] . "\n";

        if (is_array($row['text'])) {
            $array2 = $row['text'];
            echo $array2[0]; // "Binance \n"
            echo $array2[1]['type']; // "hashtag"
            echo $array2[1]['text']; // "#DLT"
            echo $array2[2]; // "BTC ...
        } else {
            echo $row['text'] . "<br />";
        }

    }
}
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge