преобразование объекта в массив, затем добавление элемента в конец массива, затем перемешивание

Я подумал, что пришло время спросить, потому что я работаю над этим более часа.

Мне нужно взять объект и преобразовать его в массив — готово
Мне нужно добавить новый элемент в конец массива как [9] => значение — ПРОБЛЕМА 🙁
Мне нужно перемешать массив — сделано

Все, что я стараюсь, всегда получается так

здесь $ wlist в качестве исходного объекта класса

 CAPTCHA_CLASS_Wordlist Object
(
[jsObjectList] => Array
(
[0] => providers
[1] => chemical
[2] => family
[3] => supported
[4] => urban
[5] => produced
[6] => continued
[7] => stream
[8] => administrative
)

)

который после преобразования это

Array
(
[0] => Array
(
[0] => claim
[1] => continued
[2] => limit
[3] => platform
[4] => websites
[5] => efforts
[6] => dollars
[7] => saint
[8] => family
)

[1] => water
)

должно быть [9] => значение

я даже безуспешно пробовал $ arrayname [9] = $ value и $ arrayname [0] [9]. Даже если я воссоздаю массив внутри foreach, у меня все еще остается та же проблема, когда я не могу добавить дополнительный элемент в конец как ключ [9]

вот мой код

      //convert object to array
$convert = (array)$wlist;

//now add the answer to it
array_push($convert, $questanswer);

//now shuffle

$final = shuffle($convert);

$ questanswer — это просто текстовое слово как — house

Спасибо 🙂

Обновление: вот как это выглядит после stdClass

         //convert object to array
$convert = (array)$wlist;

//new stdClass and load it
$nc = new stdClass;
$nc->questanswer = $questanswer;

//now add the answer to it
array_push($convert[0], $nc);

$finaloptions = shuffle($convert);Array
(
[0] => stdClass Object
(
[questanswer] => hexagon
)

[1] => Array
(
[0] => labor
[1] => designated
[2] => shops
[3] => load
[4] => fresh
[5] => mass
[6] => patch
[7] => foot
[8] => congress
)

)

1

Решение

$convert является вложенным массивом использование array_push на это первый элемент.

  //convert object to array
$convert = (array)$wlist;

//now add the answer to it
array_push($convert[0], $questanswer);

//now shuffle
$final = shuffle($convert);

редактировать

Если вы хотите продолжать идти по этому пути, ответ должен вернуться к исходному коду (например, удалить $nc = new StdClass... вещи) кроме как вместо array_push($convert, $questanswer); ты используешь array_push($conver[0], $questanswer);

Тем не менее, вы можете подумать о том, почему вы делаете это в первую очередь. Если это CAPTCHA_CLASS_Wordlist это класс, который вы создали, вы должны рассмотреть возможность добавления функции, которую вы просто передаете $questanswer к и это возвращает желаемый массив.

Если это ваш файл определения класса …

CAPTCHA_CLASS_Wordlist.php

<?php
class CAPTCHA_CLASS_Wordlist
{
JsObjectList = [...];

... your other code ...

public function getShuffledObjectListWithAnswer($questionAnswer)
{
$tempCopy = $this->JsObjectList;

//now add the answer to it
array_push($tempCopy, $questionAnswer);

//now shuffle
return shuffle($tempCopy);
}
}

Теперь вы можете использовать $wlist как это:

$final = $wlist->getShuffledObjectListWithAnswer($questanswer);

Готово.

Постскриптум Конечно, вам не придется вызывать функцию getShuffledObjectListWithAnswer, Просто кажется, что это будет описательно. Вы, кто лучше знает, что он на самом деле должен делать, могли придумать что-то лучшее.

1

Другие решения

Я только что сделал это.
кажется работает?

$wlist = new stdClass();
$wlist->property = 'Here we go';
$wlist->property1 = 'Here we go1';
$wlist->property11 = 'Here we go2';
var_dump($wlist);
$questanswer = 'bla';

//convert object to array
$convert = (array)$wlist;
var_dump($convert);
//now add the answer to it
array_push($convert, $questanswer);
var_dump($convert);
//now shuffle

$final = shuffle($convert);

var_dump($convert);
exit;
0

Найдите индекс, в который вы хотите добавить $questanswer, Пусть индекс $search_index,

Проверить онлайн

$search_index = 0;
$convert = (array) $wlist;

//now add the answer to it
array_push($convert[$search_index], $questanswer);

$convert[$search_index] это массив, и вы также можете сделать это с помощью простого оператора.

$convert[$search_index][] = $questanswer;
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector