2010-04-16 2 views
0

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

Ответ, вероятно, заключается в использовании функции foreach, array_walk или array_map, но я не знаю правильного синтаксиса.

Эта функция делает имя флип:

$name = "Lastname, Firstname"; 
$names = explode(", ", $name); 
$name = $names[1] . " " . $names[0]; 

в $ запрос похож на это:

$query0="SELECT #__1pgndata.White, #__1pgndata.Black, #__1pgndata.ECO, #__1pgndata.Result, #__1pgndata.EventDate, #__1pgndata.Id 
    FROM `#__1pgndata` Where #__1pgndata.Id > 155 LIMIT 30" 

белые и черные столбцы для имен игроков (нужно перевернуть) и соответствуют цвет шахматных фигур. В столбцах находятся $ ginfo-> White и $ ginfo-> Black.

+0

Привлечение примера такой строки очень поможет вам –

+0

Я отредактировал мой вопрос, чтобы сделать его понятным. –

+0

Это помогло бы, если бы вы могли опубликовать код, в котором вы на самом деле * используете * '$ ginfo', особенно любые уже задействованные циклы. – Amber

ответ

1

PHP имеет plenty of string functions. Вы можете использовать любые пожелания

+0

См. Код манипуляции строкой в ​​моем отредактированном вопросе. Я хочу применить его ко всей колонке или как цикл foreach. Я не могу заставить его работать. –

+0

@ggg введите этот код внутри цикла foreach. –

+0

Ответ, вероятно, заключается в использовании функции foreach, array_walk или array_map, но я не знаю правильного синтаксиса. –

0

Вы бы указали свой код db?

$query0="SELECT #__1pgndata.Black, #__1pgndata.White, #__1pgndata.ECO, #__1pgndata.Result, #__1pgndata.EventDate, #__1pgndata.Id 

ИЗ #__1pgndata Где #__ 1pgndata.Id> 155 LIMIT 30"

вы можете использовать как этот также право.

+0

См. Обновление вопроса с добавленным кодом. –

2

, если вы говорите о порядке их поставить в массиве, вам (например, SELECT first_name, last_name, .. FROM users ...), но я предлагаю вам использовать mysql_fetch_array, таким образом вы сможете получить к ним доступ по своему усмотрению (с $ row ['first_name'], $ row ['last_name'] в любом порядке)

+0

И первые, и последние находятся в одной колонке. См. Код манипуляции строкой в ​​моем отредактированном вопросе. –

+0

вы не можете применить функцию непосредственно к набору результатов db, вам нужно либо получить resutlt в массив, и применить функцию во время выполнения этого (так что $ row = mysql_fetch_array ($ result); flip ($ row) ; - где флип - это ваша функция, а строка $ передается по ссылке) или применить ее после того, как вы ее скрепили с помощью array_walk ($ rows, 'flip') – matei

+0

Если мой результирующий запрос называется $ ginfo, а рассматриваемый столбец равен $ ginfo-> Белый, какой синтаксис для array_walk будет работать для меня? –

0

Вы можете попытаться воспроизвести функциональность с помощью MySQL String Functions. Наиболее вероятным кандидатом, вероятно, была бы комбинация LOCATE(), чтобы найти позицию ', ', а затем пару звонков SUBSTR(), чтобы получить фрагменты до и после, затем используя CONCAT(), чтобы вернуть их обратно.

+0

У меня есть функция, см. Мой вопрос. Проблема возникает с синтаксисом, поэтому функция применяется ко всему столбцу. –

Смежные вопросы