PHP не является моей сильной стороной, но сегодня я пробовал некоторый код OO. Все отлично, за исключением того, что массив $ answerArray на глобальном уровне не получается написанным методом класса jumble() моего объекта solSet. Предпоследний var_dump в моем коде показывает пустой массив. Я пробовал метать глобальные ключевые слова, и это не помогло. Поскольку я явно передаю эту переменную по ссылке на мой новый экземпляр класса, разве этого недостаточно? Спасибо! ккНевозможно записать значения в глобальный массив PHP из метода класса
<?php
//create a solution set for translation of incoming user login requests
$widhi = 600;
$tileDim = 25;
$randArray = array ("0","1","2","3","4","5");
$replyArray = array();
//create 5 positions and ensure neither overlap or edge collision
class solSet
{
var $pos1;
var $pos2;
var $pos3;
var $pos4;
var $pos5;
var $pos6;
public function jumble($wh,$ts,$arrShuf,$reply)
{
foreach($this as $key => $value)
{
$newX = rand (($ts/2),$wh - ($ts/2));
$newY = rand (($ts/2),$wh - ($ts/2));
$randNo = array_pop($arrShuf);
$value = "" . $newX . "_" . $newY . "_" . $randNo;
$this->$key = $value;
//push coords onto an array for later ajax
$pushElem = "" . $newX . "_" . $newY;
$reply[] = $pushElem;
}
}
}
//scramble the random number array for later popping
shuffle($randArray);
//make a solution object
$aSolSet = new solSet;
$aSolSet->jumble($widhi,$tileDim,$randArray,$replyArray);
//store it in a session
session_start();
$_SESSION["solSet"] = $aSolSet;
echo var_dump($replyArray);
echo json_encode($aSolSet);
?>
Это, кажется, относятся: Using a global array inside a class Но это то, что я сделал. Также весь мир и его собака говорят, что глобальное ключевое слово «делает это неправильно». Что делать?
Вы не на самом деле * "явно передаете эту переменную по ссылке" * - это будет 'public function jumble ($ wh, $ ts, $ arrShuf, & $ reply)' – CD001