У меня есть страница php, где я генерирую файл json из набора SQL-запросов.Затем результаты отправляются в функцию, которая создает массив (person_checker и status_indicator - это функции, которые, я знаю, работают).
function array_builder($result, $id_name, $column_name, $type, $color)
{
global $mysqli;
while ($row = $result->fetch_array())
{
$type_construct = $type . $row[$id_name];
switch ($type)
{
case "work":
person_checker($row);
$url_color = status_indicator($row,$type)[0];
$link = status_indicator($row,$type)[1];
$new_type = $type;
$new_color = $color;
break;
case "other_work":
person_checker($row);
$url_color = status_indicator($row,$type)[0];
$link = status_indicator($row,$type)[1];
$new_type = $type;
$new_color = $color;
break;
case "person":
$url_color = status_indicator($row,$type)[0];
$link = status_indicator($row,$type)[1];
$new_type = $type;
$new_color = $color;
break;
default:
$url_color = 'aliceblue';
$link = NULL;
$new_color = $color;
$new_type = $type;
}
$item_array= array(
'id' => $type_construct,
'name' => $name,
'type' => $new_type,
'color' => $new_color,
'url_color' => $url_color,
'link' => $link,
);
array_push($GLOBALS['array'], $item_array);
}
}
Все это прекрасно работает.Но мне нужно снова запустить результат после того, как массив будет создан для генерации связей между элементами в массиве, и моя функция для этого не дает никаких результатов:
function link_builder($result,$source_type,$target_type,$source_id,$target_id) {
global $mysqli;
global $person_color;
global $multiple_author_color;
global $otherwork_other_color;
global $otherwork_lydgate_color;
while ($row = $result->fetch_array()) {
var_dump($result);
echo"<br>";
$source_location = array_search_multidim($GLOBALS['array'],'id',$source_type . $row[$source_id]);
$target_location = array_search_multidim($GLOBALS['array'],'id',$target_type . $row[$target_id]);
$color = $GLOBALS['array'][$target_location]['color'];
$array = array(
'color' => $color,
'source' => $GLOBALS['array'][$source_location]['id'],
'target' => $GLOBALS['array'][$target_location]['id'],
'value' => 1);
if (in_array_r($array,$GLOBALS['link_array']))
{}
else
{
array_push($GLOBALS['link_array'],$array);
}
}
}
Я думал, что это может бытьодна из написанных мной функций, которые в нем используются, но даже если я все урежу до var_dump
, я все равно не получу никакого результата.Объект все еще существует, так как я могу вывести его в начало и конец страницы и получить одинаковый результат в обоих местах: object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(8) ["type"]=> int(0) }
Я вижу, что у других людей была эта проблема, но ни одно из предложенных решений не работает.Что я делаю не так, или что-то происходит с MySQL, о котором я не знаю?Я бы предпочел не делать другой набор вызовов SQL, как это делает моя текущая версия этой страницы.