@rapidum_alder

Кто поможет объяснить разницу между данными и переменными?

Хочу сделать сложную структуру.
[Да потом будет база SQL но проблема есть и я хочу понять в чем ошибка.
Вдруг потом ещё раз с ней встречусь]
Тут у меня есть небольшой JSON файл выступающий в роли базы.
И я хочу обратиться к определенным данным лежащим там.
Но встретился с проблемой. Хочу вызвать объект по имени, а выходит Шиш [NULL].

<?php 

class Player {
    public function take($id){
        $config = json_decode(file_get_contents($id.'.json'));
        $out='';
        foreach((array)$config->Player as $key => $value){
            $out .= '<input type="button" value="'.$key.'" onclick="nextLevel(\''.$key.'\', \'agReSortPosition\')">'.$key.'</input>';
        }
        return $out;
    }
    public function takeRebudTest($id){
        $config = json_decode(file_get_contents($id['1'].'.json'));
        $out[]= $config->Player->Admin;
        $out[]= $id;
        foreach((array)$config->Player as $key => $value){
            $out[]=$key;
            $out[]=$value;
            $out[]=$id['1'];
            if ($key === $id['1']){$out['mess'] = 1;}
        }
        return $out;
    }
}


$post = json_decode(file_get_contents('php://input'));
$route = explode('_', $post->ident);
$class = array_shift($route); 
$method = mb_strtolower(array_shift($route));
if(is_array($route)) {
    foreach($route as $part){
        $method .= ucfirst($part);
    }
} 
if(class_exists($class)){$factory = new $class;}
if(isset($factory) && is_object($factory) && method_exists($factory, $method) === true){
  $out = $factory->$method($post->metod);
} else {
  $out = ['method doesnt find'];
}
echo json_encode($out);
die();
?>


var url='test.php';

function i(c) {return document.getElementById(c);}
function k(c) {return document.getElementsByClassName(c)[0];}
function Start() {
  fetch(url, {
    method: 'POST',
    body: JSON.stringify({"ident" : "Player_take", "metod":"agReSortPosition"}),
}).then(response => response.json())
.then((data) =>  i('Select_view').innerHTML = data)
}

function nextLevel($s_2, $s_1){
  fetch(url, {
    method: 'POST',
    body: JSON.stringify({"ident" : "Player_take_rebud_Test", "metod" : [$s_2, $s_1]}),
}).then(response => response.json())
.then((data) =>  i('Select_view').innerHTML = data)
}

Это JSON agReSortPosition.json
{
    "Player":{
        "Admin":[ "28", "34"],
        "Tester": ["37","74"],
        "User": ["91","01"],
        "Dezigner": ["45","17"]
    }

}


В функции takeRebudTest я хочу обращаться к $config->Player->$id['0']; и получать ["28", "34"] но я получаю Null.

Я проверяю $key === $id['0'] но они одинаковые. В devtools я получаю:

{0: ["28", "34"], 1: null, 2: ["Admin", "agReSortPosition"], 3: "Admin", 4: ["28", "34"], 5: "Admin",…}
0: ["28", "34"]
1: null
2: ["Admin", "agReSortPosition"]
3: "Admin"
4: ["28", "34"]
5: "Admin"
6: "Tester"
7: ["37", "74"]
8: "Admin"
9: "User"
10: ["91", "01"]
11: "Admin"
12: "Dezigner"
13: ["45", "17"]
14: "Admin"
mess: 1


Это скорее всего простой вопрос, но простите я пока безграмотен, и найти ответ на этот вопрос я пока не смог.
Заранее Благодарен.
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
@rapidum_alder Автор вопроса
Все разобрался,
var url='test.php';
function i(c) {return document.getElementById(c);}
function new_fetch(post){ return fetch(url, {method: 'POST',  body: JSON.stringify(post),}).then(response => response.json())}
function Start() {$post={"ident" : "Player_take", "metod":"agReSortPosition"};
  new_fetch($post).then((data) =>  i('Select_view').innerHTML = data)}
function nextLevel($s_2, $s_1){$post={"ident" : "Player_take_Rebud_test", "metod":{"name":$s_1, "style":$s_2}};
  new_fetch($post).then((data) =>  i('Select_view').innerHTML = data)}


Поменял JS, теперь вместо массивов я отправляю объекты.
public function takeRebudTest($id){
        $config = json_decode(file_get_contents($id->name.'.json'), true);
        foreach($config['Player'][$id->style] as  $value){
            $out[]=$value;
                    }
        return $out;
    }


И поменял функцию takeRebudTest.
Я как понял, не мог обращаться к Json Объектам через переменные.
Но я могу обращаться к JSON как к массиву.
$config = json_decode(file_get_contents($id->name.'.json'), true);
И у меня заработало.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lord_Dantes
@Lord_Dantes
Front-end developer
Кто поможет объяснить разницу между данными и переменными?

Данные — зарегистрированная информация[1]:439; представление фактов, понятий или инструкций в форме, приемлемой для общения, интерпретации, или обработки человеком или с помощью автоматических средств.

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

Или вкратце данные находятся в переменной если они где-то используются. Но и переменную с данными можно назвать данные. Ну вот так вот.

А описание не читал, к вопросу не относится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
Алгоритмика Москва
от 110 000 до 160 000 руб.
N1.RU Новосибирск
от 100 000 руб.