Как мне получить индекс из массива, который был создан с помощью цикла foreach и находится внутри текстового файла? - PullRequest
0 голосов
/ 19 февраля 2019

Я использую форму - для получения данных - и перебираю эти данные для создания различных массивов в файле с именем data.txt.Я пытаюсь вытащить индекс каждого массива в отдельности.Я хочу иметь возможность отображать (arry1 - value1) в определенном div на странице и echo (arry1 - value2) в другом div на странице и т. Д.

Я могу получить массивы для печати, нокогда я пытаюсь вызвать только один конкретный индекс из одного конкретного массива, я либо получаю ответ NULL, либо страница читает «эта страница не работает»

Вот так выглядит мой файл data.txt - онправильно получает данные из формы.Но если эти две группировки являются массивами, почему я не могу извлечь информацию по одному индексу за раз?

data.txt

{
"let": {
"chef": "tema",
"bio": "temabio",
"image": "temaimage",
"special_name": "pears",
"special_descr": "purple",
"child_name": "bob",
"child_descr": "opie"
},
"cafe": {
"chef": "herb",
"bio": "herbbio",
"image": "herbimage",
"special_name": "apple",
"special_descr": "mike",
"child_name": "Rob Davis",
"child_descr": "blue"
}
}

action.php

    <?php
if (isset($_POST['submit'])) {
    $data = json_decode(file_get_contents("data.txt"), true); // true for assoc
    $data[$_POST['restaurant']] = array(
        "chef" => $_POST['chef'],
        "bio" => $_POST['bio'],
        "image" => $_POST['image'],
        "special_name" => $_POST['special_name'],
        "special_descr" => $_POST['special_descr'],
        "child_name" => $_POST['child_name'],
        "child_descr" => $_POST['child_descr']
    );
    $newData = json_encode($data);
    file_put_contents("data.txt", $newData);
}
?>

load.php

<?php
$data = json_decode(file_get_contents("data.txt"), true); // true for assoc

foreach($data as $k => $v) {
    echo "<p>" . PHP_EOL;
    echo "Restaurant " . $k . "is" . $v . "<br />" . PHP_EOL;
    echo "Chef: " . $v['chef'] . "<br />" . PHP_EOL;
    echo "bio: " . $v['bio'] . "<br />" . PHP_EOL;
    echo "image: " . $v['image'] . "<br />" . PHP_EOL;
    echo "Name: " . $v['special_name'] . "<br />" . PHP_EOL;
    echo "Description: " . $v['special_descr'] . "<br />" . PHP_EOL;
    echo "Children: " . $v['child_name'] . "<br />" . PHP_EOL;
    echo "Description: " . $v['child_descr'] . "<br />" . PHP_EOL;
    echo "</p>" . PHP_EOL;  
    }
    var_dump($let['chef']);


?>
<?php
$myfile = fopen("data.txt", "r") or die("Unable to open file!");
echo fread( $myfile,filesize("data.txt"));


fclose($myfile);


?>

Это ответ:

Restaurant letisArray
Chef: tema
bio: temabio
image: temaimage
Name: pears
Description: purple
Children: bob
Description: opie



Restaurant cafeisArray
Chef: herb
bio: herbbio
image: herbimage
Name: apple
Description: mike
Children: Rob Davis
Description: blue


NULL {"let":{"chef":"tema","bio":"temabio","image":"temaimage","special_name":"pears","special_descr":"purple","child_name":"bob","child_descr":"opie"},"cafe":{"chef":"herb","bio":"herbbio","image":"herbimage","special_name":"apple","special_descr":"mike","child_name":"Rob Davis","child_descr":"blue"}}

Ответ гласит, что «let is Array», так почему я не могу извлечь информацию из него, как я должен бытьВ состоянии?

Все они ответили NULL - я попробовал их внутри функции, вне функции, на разных страницах и т. д. Я попытался использовать второй цикл foreach внутри первого цикла, чтобы вытащить информацию, но яникогда не заставлял его работать.

var_dump($let['chef']);
var_dump($let[ "Chef:" "chef"]);
echo($let["bio"]);
echo "Chef: " . $let['chef'] . "<br />" . PHP_EOL;
var_dump($cafe);

print_r ($myfile);

echo $myfile($let["bio"]);;

echo "bio: " . $let['bio'] . "<br />" . PHP_EOL;
echo "Chef: " . $let['chef'] . "<br />" . PHP_EOL;


 var_dump($restaurant['let']);
    var_dump($restaurant["let"]["chef"])

Если кто-нибудь может сказать мне, как вытащить каждое значение отдельно, это было бы здорово.Я хочу иметь возможность печатать значение ключа "chef" из массива $ let и так далее.- Я пробовал это в течение 2 дней, и я не знаю, что еще попробовать.Конечно, я очень плохо знаком с программированием и совсем не знаю PHP, но, похоже, все должно быть очень просто.У вас есть массив - вы вызываете значения, используя имя массива и правильный ключ индекса?

1 Ответ

0 голосов
/ 19 февраля 2019

У вас нигде нет переменной с именем $let.У вас есть только $data, $k и $v.$k имеет значение let, и в это время $v имеет массив значений для этого ключа.Если вы хотите получить доступ к данным для этого ключа, массив находится в $data['let'], поэтому шеф-поваром для этого является $data['let']['chef'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...