Я подумал, что пришло время спросить, потому что я работаю над этим более часа.
Мне нужно взять объект и преобразовать его в массив — готово
Мне нужно добавить новый элемент в конец массива как [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
)
)
$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
, Просто кажется, что это будет описательно. Вы, кто лучше знает, что он на самом деле должен делать, могли придумать что-то лучшее.
Я только что сделал это.
кажется работает?
$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;
Найдите индекс, в который вы хотите добавить $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;