Я могу только предположить, что где-то в коде, предшествующем этому, вы установили $ln
, $ln
, $phone
и $Email
для некоторого строкового значения по умолчанию. Затем, поскольку вы не изменяете значение $ i с 0 в цикле, вы устанавливаете первую букву этих строк равной строковому значению, возвращенному из mysql_fetch_array()
, что приводит к изменению только первой буквы. Трудно объяснить, поэтому позвольте мне привести пример:
$tmp = 'A';
$tmp[0] = 'It does not matter how long this string is!';
echo $tmp;
Результатом этого фрагмента является то, что один символ "I" получает эхо.
Ваш код будет работать как:
$fn = $ln = $phone = $Email = array();
$i=0;
while($row = mysql_fetch_array($result)) {
$fn[$i] = $row ['FN'];
$ln[$i] = $row ['LN'];
$phone[$i] = $row ['Phone'];
$Email[$i] = $row ['Email'];
++$i;
}
Либо найдите, где вы задали переменные в виде строк.
Подумайте о наличии массива «пользовательских» объектов, потому что разделение связанной информации, как это, редко бывает полезным.
, например
class User {
public $first_name = '';
public $last_name = '';
public $phone_number = '';
public $email = '';
public function __construct($first, $last, $phone, $email) {
$this->first_name = $first;
$this->last_name = $last;
$this->phone_number = $phone;
$this->email = $email;
}
public function full_name() {
return $first_name . ' ' . $last_name;
}
}
while ($row = mysql_fetch_array($result)) {
$users[] = new User($row['FN'], $row['LN'], $row['Phone'], $row['Email']);
}
Объекты, имхо, не должны иметь общедоступных свойств, но это для примера.