#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, поэтому я ответил на это.