Получить результаты из запроса mysql в целочисленный массив?

#php #mysql

#php #mysql

Вопрос:

Я использую встроенный в php запрос mysql следующим образом:

 $query_sample = mysql_query(" 
SELECT left FROM sampleTable WHERE right  = 1 
UNION 
SELECT right FROM sampleTable WHERE left  = 1 
");
  

где оба столбца «правый» и «левый» являются целыми числами.

После выполнения этого запроса я хочу, чтобы результирующий набор был назначен в целочисленный массив в php. Существует ли эффективный подход к преобразованию результатов запроса в целочисленный массив??

ВОПРОС:

В принципе, я хочу иметь возможность задать вопрос: «Есть ли $ x в $ results_array» после того, как набор результатов запроса был присвоен $ results_array, а $ x — любое целое число.

Любая помощь приветствуется, ребята….

Комментарии:

1. Если x это столбец в sampleTable , вы должны сделать это с помощью SQL.

2. Пожалуйста, не пишите теги в заголовках вопросов.

3. @Jason $ x не является столбцом в sampleTable, он просто проверяет, находится ли $ x в результирующем наборе.

4. Если это есть в наборе результатов, не означает ли это, что это в таблице?

5. Я все еще в замешательстве… Позвольте мне перефразировать — если x есть значение, которое вы можете проверить по столбцу в sampleTable , вы должны сделать это с помощью SQL.

Ответ №1:

Вы просматриваете результат и строите массив.

Если вам действительно нужно, чтобы результат был целыми числами, просто передайте его через intval . Далее следует краткий фрагмент.

 $query_sample = mysql_query(" 
SELECT left FROM sampleTable WHERE right  = 1 
UNION 
SELECT right FROM sampleTable WHERE left  = 1 
");
$result = array();
while($r = mysql_fetch_array($query_sample, MYSQL_NUM)){
    $result[] = intval($r[0]);
}

var_dump($result);
  

Редактировать: Извините. Я напортачил с вещами. Только что исправил это.


Я в принципе хочу иметь возможность задать вопрос: «Является ли $ x в $ results_array»

Сделайте это с помощью MySQL! Он оптимизирован для быстрого выполнения таких задач. Особенно, если вы правильно настроили индексы.

Ответ №2:

php — это свободно типизированный язык, поэтому, как правило, действительно не имеет значения, «10» это или 10. php правильно оценит это как целое число, если вы сделаете что-то вроде

 $x = "10";
$y = $x * 10; // assigns 100
  

..но если вы действительно хотите выяснить, может ли это быть целым числом, вы можете использовать is_int()

Или, если вы хотите конкретно ввести его приведение, вы можете сделать следующее

 $x = intval($x);
  

или

 $x = (int) $x;
  

редактировать: (ответ на комментарий ниже)

re: «получение результатов в массив»

Когда вы выполняете запрос, вы получаете возвращенный исходный результат. Для того, чтобы поместить возвращенные данные в массив, вам нужно выполнить цикл по источнику результата и присвоить массиву. Пример:

 $result = mysql_query($querystring);
while ($row = mysql_fetch_assoc($result)) {
  $array[] = $row['columnname'];
}
  

Комментарии:

1. Меня больше интересует первая часть вопроса, которая включала получение результирующего набора из запроса в массив. Есть предложения?

2. @Tomalak: Нет, верно question..it просто звучало так, как будто он был обеспокоен тем, что результаты будут строкой вместо int, поэтому я ответил на это.