Доступ к внутреннему массиву ассоциативного массива в PHP - PullRequest
0 голосов
/ 15 февраля 2020

Я создал очень простой ассоциативный массив идентификаторов из базы данных MySQL.

Содержимое массива выглядит примерно так:

[0]=> array(1) { ["id"]=> int(2) } 
[1]=> array(1) { ["id"]=> int(3) } 
[2]=> array(1) { ["id"]=> int(4) } 
[3]=> array(1) { ["id"]=> int(15) } 
[4]=> array(1) { ["id"]=> int(17) } 
[5]=> array(1) { ["id"]=> int(18) } 
[6]=> array(1) { ["id"]=> int(3) } etc.

Однако для целей, которые Я использую массив, мне нужно получить доступ к идентификаторам целых чисел, чтобы их можно было использовать для пометки строк в родительской таблице. Однако созданные мной сценарии, похоже, не используют ["id"] => int (2) , и поэтому код завершается ошибкой.

У меня есть следующий код:

MySQL код:

  public function unused()
    {
        $query = "select person.id from person, thing, person_thing
WHERE flag = 1 AND person.id = person_thing.person_id AND person_thing.thing_id = thing.id and thing.name != 'used'
AND person.name NOT IN (select person.name from person, thing, person_thing WHERE person.id = person_thing.person_id
AND person_thing.thing_id = thing.id and thing.name = 'used')";
        $stmt = $this->Conn->prepare($query);
        $stmt->execute(array());
        return 
        $stmt->fetchAll(PDO::FETCH_ASSOC);

Код функции:

{
        $things = $thing->unused();
        $smarty->assign('thing_used', $things);
        for ($i = 0; $i <= count($things); $i++) {
            $gameView->iterateThings($things[$i]);
        }

Итерация кода метода

Public function iterateThings($id)
    {
        $changeFlag = "UPDATE thingview SET flag = false WHERE  id= :id";
        $stmt = $this->Conn->prepare($changeFlag);
        $stmt->execute(array(':id' => $id));

    }

У меня есть представление с именем set up, в котором булевы флаги имеют значение true. Я пытаюсь использовать этот код, чтобы изменить настройки флага для всех person.ids, которые находятся в ассоциативном массиве $ things. Наивно я думал, что этого будет достаточно, но каждый раз, когда я запускаю код, флаги остаются неизменными. Похоже, что содержимое массива: array (1) {["id"] => int (2)} , где мне нужно {["id"] => int (2)} . Мне нужен индекс и просто массив. Я погуглил это объявление до бесконечности, но безуспешно. Есть идеи?

1 Ответ

0 голосов
/ 15 февраля 2020

Я понял, что создал многомерный массив ... Это меня бросало. Я полагаю, что на этом этапе необходимы дополнительные исследования многомерных массивов, и если мне понадобится дополнительная помощь, я перефразирую вопрос.

...