PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 9
Сергей Ш. Отправлено: 12 Ноября, 2016 - 21:33:21 • Тема: Как седелать выборку из двумерного массива по ключам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Prizma пишет:
Сергей Ш. пишет:
а если при задании условий отбора, функция ничего не возвращает, как это определить, потому что у меня в NetBeans пишет array[0], проверял isset(), но она показывает что значение установленно

var_dump $array, $a и $b сделай, там все ответы, где то чего-то не совпадает по условию.

И возвращать ничего не может, скорее всего возвращает пустой массив, а это значит, что callback-функция не разу не вернула true, значит ошибка либо в условии, либо в переданном массиве.

Проверь может в условии ключи неправильно указал (регистр важен) или значения передаются некорректные.



Спасибо за помощь, со всем разобрался, все проблемы решил!
Сергей Ш. Отправлено: 12 Ноября, 2016 - 09:18:41 • Тема: Как седелать выборку из двумерного массива по ключам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Prizma пишет:
Сергей Ш. пишет:
а если при задании условий отбора, функция ничего не возвращает, как это определить, потому что у меня в NetBeans пишет array[0], проверял isset(), но она показывает что значение установленно

var_dump $array, $a и $b сделай, там все ответы, где то чего-то не совпадает по условию.

И возвращать ничего не может, скорее всего возвращает пустой массив, а это значит, что callback-функция не разу не вернула true, значит ошибка либо в условии, либо в переданном массиве.

Проверь может в условии ключи неправильно указал (регистр важен) или значения передаются некорректные.


мне как раз и надо чтобы фильтр ничего не возвращал, тогда я не заполняю тэги <td>, когда возвращает, тогда заполняю, а нашел как отлавливать это функцией count, но только так как у меня опыт в этой сфере маленький, возникает много вопросов. Если у меня фильтр возвращает значения то я пишу <td>arr['key']</td>, а если ничего не возвращается то <td></td>, и в браузере выскакивает сообщение что я пытаюсь использовать не инициализированную переменную, вот этот момент мне не понятен, или нельзя выводить пустую ячейку?
(Добавление)
Сергей Ш. пишет:
Prizma пишет:
Сергей Ш. пишет:
а если при задании условий отбора, функция ничего не возвращает, как это определить, потому что у меня в NetBeans пишет array[0], проверял isset(), но она показывает что значение установленно

var_dump $array, $a и $b сделай, там все ответы, где то чего-то не совпадает по условию.

И возвращать ничего не может, скорее всего возвращает пустой массив, а это значит, что callback-функция не разу не вернула true, значит ошибка либо в условии, либо в переданном массиве.

Проверь может в условии ключи неправильно указал (регистр важен) или значения передаются некорректные.


мне как раз и надо чтобы фильтр ничего не возвращал, тогда я не заполняю тэги <td>, когда возвращает, тогда заполняю, а нашел как отлавливать это функцией count, но только так как у меня опыт в этой сфере маленький, возникает много вопросов. Если у меня фильтр возвращает значения то я пишу <td>arr['key']</td>, а если ничего не возвращается то <td></td>, и в браузере выскакивает сообщение что я пытаюсь использовать не инициализированную переменную, вот этот момент мне не понятен, или нельзя выводить пустую ячейку?


вот код:

// Заполняем последующие столбцы
foreach ($arrQA as $QA) {
$el = array_filter($filterArray, function($el) use($p, $L, $QA) {
return ($el['Innendruck'] == $p) && ($el['Dichtheitsklasse'] == $L) && ($el['QA'] == $QA);
});
if (count($el) > 0) {
echo "<td>{$el['Qsmin']}</td>";
} else {
echo "<td></td>";
}
$el = null;
}

а потом в браузере выдается следующее:
Notice: Undefined index: Qsmin in C:\xampp\htdocs\odbc_connect\gasket_info.php on line 148

строка 148 это:
echo "<td>{$el['Qsmin']}</td>";

var_dump($el); на месте этой строки выдает следкющее:
array (size=1)
0 =>
array (size=4)
'Innendruck' => string '10' (length=2)
'Dichtheitsklasse' => string '1' (length=1)
'QA' => string '10' (length=2)
'Qsmin' => string '5' (length=1)

или вот это обращение ($el['Qsmin']) не верно?
Сергей Ш. Отправлено: 11 Ноября, 2016 - 15:27:11 • Тема: Как седелать выборку из двумерного массива по ключам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Prizma пишет:
Сергей Ш. пишет:
вместо 10 и 1 передать переменные объявленные за пределами фильтра или это нельзя сделать? Я попытался передать переменные, которые инициализирую выше и получаю сообщение об ошибке, что в условии они не инициалицированны.

вот так
PHP:
скопировать код в буфер обмена
  1. $filterArray = array_filter($array, function($el) use($a, $b) {
  2.         return ($el['optA'] == $a) && ($el['optB'] == $b);
  3. });


Спасибо Вам еще раз за бытрый ответ!
(Добавление)
Prizma пишет:
Сергей Ш. пишет:
вместо 10 и 1 передать переменные объявленные за пределами фильтра или это нельзя сделать? Я попытался передать переменные, которые инициализирую выше и получаю сообщение об ошибке, что в условии они не инициалицированны.

вот так
PHP:
скопировать код в буфер обмена
  1. $filterArray = array_filter($array, function($el) use($a, $b) {
  2.         return ($el['optA'] == $a) && ($el['optB'] == $b);
  3. });


а если при задании условий отбора, функция ничего не возвращает, как это определить, потому что у меня в NetBeans пишет array[0], проверял isset(), но она показывает что значение установленно
Сергей Ш. Отправлено: 11 Ноября, 2016 - 14:15:43 • Тема: Как седелать выборку из двумерного массива по ключам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Prizma пишет:
1. Можно сначало отобрать нужные значения array_filter
2. А потом создать 2 твоих массива с помощью array_column
Например вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = [...];
  3. $filterArray = array_filter($array, function($el) {
  4.         return ($el['optA'] == 10) && ($el['optB'] == 1);
  5. });
  6. $optA = array_column($filterArray, 'optA');
  7. $optB = array_column($filterArray, 'optB');
  8.  


Спасибо! Вот эта часть подошла:
$filterArray = array_filter($array, function($el) {
return ($el['optA'] == 10) && ($el['optB'] == 1);
});
(Добавление)
Подскжите еще как в условие фильтра:

$el['optA'] == 10) && ($el['optB'] == 1

вместо 10 и 1 передать переменные объявленные за пределами фильтра или это нельзя сделать? Я попытался передать переменные, которые инициализирую выше и получаю сообщение об ошибке, что в условии они не инициалицированны.
Сергей Ш. Отправлено: 11 Ноября, 2016 - 12:54:04 • Тема: Как седелать выборку из двумерного массива по ключам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
у меня есть двумерный массив:
Array
(
[0] => Array
(
[optA] => 10
[optB] => 1
[QA] => 5
[Qsmin] => 5
)

[1] => Array
(
[optA] => 10
[optB] => 1
[QA] => 10
[Qsmin] => 5
)

[2] => Array
(
[optA] => 10
[optB] => 2
[QA] => 20
[Qsmin] => 5
)

[3] => Array
(
[optA] => 10
[optB] => 2
[QA] => 30
[Qsmin] => 5
)

[4] => Array
(
[optA] => 40
[optB] => 1
[QA] => 40
[Qsmin] => 5
)

[5] => Array
(
[optA] => 40
[optB] => 1
[QA] => 60
[Qsmin] => 5
)

[6] => Array
(
[optA] => 40
[optB] => 2
[QA] => 80
[Qsmin] => 5
)

[7] => Array
(
[optA] => 40
[optB] => 2
[QA] => 100
[Qsmin] => 5
)
...
)

подскажите как выбрать из этого массива данные и поместить их в ондномерный массив, например для ключей optA =10 и optB =1, у меня даные по ключу optA помещаются в разные таблицы, а optВ строки в этих таблицах.
Сергей Ш. Отправлено: 07 Ноября, 2016 - 13:20:11 • Тема: Проблема с кодировкой отображаемых данных • Форум: HTTP и PHP

Ответов: 2
Просмотров: 944
3d_killer пишет:
htaccess положи в директорию внутри AddDefaultCharset utf-8


не помогло, например символ R в кругу (зарегистрированная марка) и буквы чешского алфавита так же отображаются не верно, как и раньше
(Добавление)
Сергей Ш. пишет:
3d_killer пишет:
htaccess положи в директорию внутри AddDefaultCharset utf-8


не помогло, например символ R в кругу (зарегистрированная марка) и буквы чешского алфавита так же отображаются не верно, как и раньше


если MS Access хранит данные в unicode, то это utf-16, а не utf-8, а многие фунукии PHP не поддерживают utf-16 например такие как: htmlentities(), html_entity_decode()
Сергей Ш. Отправлено: 07 Ноября, 2016 - 12:27:48 • Тема: Проблема с кодировкой отображаемых данных • Форум: HTTP и PHP

Ответов: 2
Просмотров: 944
я читаю данные из БД MS Access при помощи PDO

// Connection to ms access
$pdo = new PDO ("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" . DB_PATH, USER_NAME, PWD);
$pdo->exec("set names utf8");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

устанавливаю кодировку для запроса utf8, для страницы тоже стоит кодировка utf8

<head>
<meta charset="UTF-8">
<title></title>
</head>

но при отображении на странице некоторые символы заменяются на ?, хотя в БД они выглядят нормально, подскажите, где может быть проблема?
Сергей Ш. Отправлено: 07 Ноября, 2016 - 12:19:55 • Тема: Как заменить символ & • Форум: HTTP и PHP

Ответов: 2
Просмотров: 775
Мелкий пишет:
Формируете ссылку? Так ссылку и формируйте: urlencode


Спасибо за помощь!
Сергей Ш. Отправлено: 07 Ноября, 2016 - 11:07:01 • Тема: Как заменить символ & • Форум: HTTP и PHP

Ответов: 2
Просмотров: 775
в php коде я читаю из БД названия фирм, которые могут содержать символ &, затем эти данные используются при формировании тега <a>:

"<a href='type_of_sort.php?manufacturer=" . htmlspecialchars($row['manufacturer'], ENT_QUOTES) ."'>" . $row['manufacturer'] . "</a>"

пытался использовать функцию htmlspecialchars, но в результате символ & отстается в ссылке без изменения, что я делаю не так?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB