Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
1

Работа с массивом

03.06.2016, 18:50. Показов 1864. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
пытаюсь из массива многомерного, который из базы вытягивается создать массив и отфильтровать данные потом значение передать в текстовое окно. до окна не дошел. где-то тут ошибка. подскажите пожалуйста где? результат выборки не выводит.
Warning: array_filter() expects parameter 1 to be array, null given in C:\AppServ\www\js\ITS.php on line 66
я новичок в этом и потому не до конца понимаю иногда.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$link = mysqli_connect("localhost", "root", "372326230", "entrydata");
if (!$link) {
printf("Ошибка подключения: %s\n", mysqli_connect_error());
}
printf("Информация о хосте: %s\n", mysqli_get_host_info($link)." База подключена");
$aString = mysqli_query($link, "SELECT pr, kk FROM mushrooms");
$row = mysqli_fetch_assoc($aString);
mysqli_set_charset($link, "utf-8");
$needle = "Вешенка";
$result = array_filter($row, function($innerArray){
    global $needle;
    return ($innerArray[0] == $needle); 
}); // Вот эта строка у меня 66я
echo '<pre>'.print_r($result, true).'</pre>';
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2016, 18:50
Ответы с готовыми решениями:

Работа с массивом
Всем привет. Необходимо реализовать допустим подсчет чего либо для нескольких людей (например...

Работа с массивом,
После выполнения скрипта на выходе получается следующее (перенос строки после трех элементов...

Работа с массивом
Добрый день! Есть вот такой массив Array ( =&gt; Array ( =&gt; Array ...

Работа с массивом
Есть двумерный массив такого вида: Array ( =&gt; Array ( =&gt; 9 ...

18
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
03.06.2016, 19:02 2
Цитата Сообщение от Omion Посмотреть сообщение
Warning: array_filter() expects parameter 1 to be array, null given
array_filter ожидает что первым параметром будет массив, а передан null. Дальше файл и строка где это произошло
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 09:07  [ТС] 3
Заменил участок:
PHP
1
2
3
4
$result = array_filter($row, function($innerArray){
    global $needle;
    return ($innerArray[0] == $needle); 
});
на попроще:
PHP
1
print_r(array_filter($row, $needle));
теперь пишет, что первое значение должно быть массивом а оно передаёт нуль.
Warning: array_filter() expects parameter 1 to be array, null given in C:\AppServ\www\js\ITS.php on line 63
Но $row - это массив.(я так думаю) т.к
PHP
1
$row = mysqli_fetch_assoc($aString);
или я не правильно думаю?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 09:33 4
Цитата Сообщение от Omion Посмотреть сообщение
или я не правильно думаю?
Неправильно. Открываем документацию на mysqli_fetch_assoc и читаем:
Возвращает ассоциативный массив строк, соответствующий результирующей выборке, где каждый ключ в массиве соответствует имени одного из столбцов выборки или NULL, если других рядов не существует.
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 13:09  [ТС] 5
Сделал вот так.
PHP
1
2
3
4
5
6
7
8
9
$row = mysqli_fetch_all($aString);
mysqli_set_charset($link, "utf-8");
 
        echo"<pre>";
print_r(array_filter($row, function($pr,$zn){
    $pr == 'pr' || $zn == 'Вешенка';
}, ARRAY_FILTER_USE_BOTH
));
        echo"</pre>";
Ничего не показывает, кроме:
HTML5
1
2
3
Array
(
)
Показатели мной записанные точно есть в массиве.
Всё как в примере.
Пример (вот отсюда):
PHP
1
2
3
4
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
var_dump(array_filter($arr, function($v, $k) {
    return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
я ближе вроде к решению!!!!
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 13:41 6
Цитата Сообщение от Omion Посмотреть сообщение
Сделал вот так.
1. Зачем устанавливать кодировку mysqli_set_charset после того как уже получил все данные?
2. Напишите уже var_dump($row) и посмотрите что там есть а чего нет...
1
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 16:56  [ТС] 7
А как из многомерного массива типа:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
array(19) { //я так понимаю,что 19 -это количество элементов массива
  [0]=>
  array(2) { //2ка - количество элементов в массиве
    [0]=>
    string(14) "Лисички" //14 - это число знаков в строке? но если посчитать их там 7!! Почему так??
    [1]=>
    string(2) "20"
  }
  [1]=>
  array(2) {
    [0]=>
    string(14) "Вешенка"
    [1]=>
    string(2) "38"
  }
извлекать данные?
метод типа:
PHP
1
2
3
4
print_r(array_filter($row, function($pr,$zn){
    $pr == 'pr' || $zn == 'Вешенка';
}, ARRAY_FILTER_USE_BOTH
));
результатов не даёт!!!
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 17:02 8
Цитата Сообщение от Omion Посмотреть сообщение
извлекать данные?
PHP
1
echo $a[0][0];
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 17:08  [ТС] 9
Цитата Сообщение от pav1uxa Посмотреть сообщение
Зачем устанавливать кодировку mysqli_set_charset после того как уже получил все данные?
та я где-то видел!! мол надо писать вот и пишу.

Цитата Сообщение от pav1uxa Посмотреть сообщение
Напишите уже var_dump($row) и посмотрите что там есть а чего нет...
спасибо за совет.) я учусь. стараюсь. набираю опыт))

Добавлено через 6 минут
Цитата Сообщение от pav1uxa Посмотреть сообщение
echo $a[0][0];
это я знаю,
смотрю на php.net там примеры одномерных, элементарных массивов в фильтре. а примеров фильтра многомерных нет. Возможно написать примерчик хотя бы один?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 17:19 10
Цитата Сообщение от Omion Посмотреть сообщение
Возможно написать примерчик хотя бы один?
Примерчик чего? Покажите исходный массив и массив, который хотите получить.
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 17:36  [ТС] 11
вот к примеру массив многомерный:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
array(19) {
  [0]=>
  array(2) {
    [0]=>
    string(14) "Лисички"
    [1]=>
    string(2) "20"
  }
  [1]=>
  array(2) {
    [0]=>
    string(14) "Вешенка"
    [1]=>
    string(2) "38"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "Рыжик"
    [1]=>
    string(2) "17"
  }
  [3]=>
  array(2) {
    [0]=>
    string(10) "Опята"
    [1]=>
    string(2) "17"
  }
  [4]=>
  array(2) {
    [0]=>
    string(14) "Моховик"
    [1]=>
    string(2) "19"
  }
я пытаюсь найти в нём значение к примеру Опята, а потом вывести 17.
P.S давнооо уже не получается.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 17:39 12
Цитата Сообщение от Omion Посмотреть сообщение
вот к примеру массив многомерный:
Выведите его через var_export(), чтобы я мог скопировать себе в код, а не переписывать в ручную.
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 17:49  [ТС] 13
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
array (
  0 => 
  array (
    0 => 'Лисички',
    1 => '20',
  ),
  1 => 
  array (
    0 => 'Вешенка',
    1 => '38',
  ),
  2 => 
  array (
    0 => 'Рыжик',
    1 => '17',
  ),
  3 => 
  array (
    0 => 'Опята',
    1 => '17',
  ),
  4 => 
  array (
    0 => 'Моховик',
    1 => '19',
  )
вот он
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 18:20 14
Цитата Сообщение от Omion Посмотреть сообщение
я пытаюсь найти в нём значение к примеру Опята, а потом вывести 17.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<pre>
<?php
$a = array (
  0 => 
  array (
    0 => 'Лисички',
    1 => '20',
  ),
  1 => 
  array (
    0 => 'Вешенка',
    1 => '38',
  ),
  2 => 
  array (
    0 => 'Рыжик',
    1 => '17',
  ),
  3 => 
  array (
    0 => 'Опята',
    1 => '17',
  ),
  4 => 
  array (
    0 => 'Моховик',
    1 => '19',
  )
  );
foreach ($a as $v)
    if ($v[0] == "Опята")
        echo $v[1];
1
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 18:27  [ТС] 15
pav1uxa, вопрос с вашего позволения. а почему в примере:
Цитата Сообщение от pav1uxa Посмотреть сообщение
foreach ($a as $v)
if ($v[0] == "Опята")
echo $v[1];
$v[0]? я не понимаю. оно проходит по первым элементам? т.е по нулевым или как?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 18:31 16
Цитата Сообщение от Omion Посмотреть сообщение
$v[0]? я не понимаю. оно проходит по первым элементам? т.е по нулевым или как?
А Вы вообще пытались изучить язык, типы данных, синтаксис, основные функции, прежде чем разбираться в скриптах?
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 19:06  [ТС] 17
Цитата Сообщение от pav1uxa Посмотреть сообщение
А Вы вообще пытались изучить язык
я видюшки обучающие смотрел на ютубе про php, html, js, jq, mysql
Цитата Сообщение от pav1uxa Посмотреть сообщение
типы данных
в технаре пару раз рассказывали. там числовые, строковые, логические типы
Цитата Сообщение от pav1uxa Посмотреть сообщение
синтаксис
подглядываю вот сюда
php.net, jquery, htmlbook

а так. всё сам, всё сам. в технаре типо учат, 3 года на консоль калькулятор писать. хрень какая-то наша система обучения. я хочу больше. а кто пояснит? кто поможет? пришел в технарь с куском кода. говорю интересуюсь. а мне препод по программированию я тут не шарю. я к другому с вопросами и тот не может пояснить. я говорит не понимаю как сделать. хотя чек по вебу. хочу знать а никто не поможет. так как??? как учиться без учителя??? хорошо тут помогают и я могу помочь, тем что знаю, кому-то. и читаю комменты других тоже опыт. вот как-то так всё

Добавлено через 6 минут
аааааааааа то есть он ищет среди первых значений слово опята и выводит второе значение!!!!
понял. видимо я запарился. начал рассуждать и понял. просто до этого как-то не рассуждал, ни разу
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.06.2016, 19:17 18
Цитата Сообщение от Omion Посмотреть сообщение
а так. всё сам, всё сам.
Дело не в том - сам или не сам. Я вообще еще не слышал чтобы были программисты которых программированию кто то научил... Прежде чем скрипты писать, нужно хоть какую то книжку прочитать от начала и до конца, без пропусков. Хотя бы вот это - http://php.net/manual/ru/langref.php
0
190 / 55 / 12
Регистрация: 19.05.2015
Сообщений: 352
04.06.2016, 19:27  [ТС] 19
спасибо. прочту.
я думал достаточно знать общий принцип. типо как переменную создать или цикл, или функцию. примерно ориентироваться че куда подставлять,
да справочник под рукой иметь.(я примерно на этом уровне)
оказывается ещё надо книжку прочитать. хорошо.
0
04.06.2016, 19:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2016, 19:27
Помогаю со студенческими работами здесь

Работа с массивом
Есть массив &lt;?foreach($photos):?&gt; &lt;pre&gt; &lt;? print_r($photos);?&gt; &lt;/pre&gt; &lt;?endforeach;?&gt; ...

Работа с БД и массивом
Всем привет! Опять я обращаюсь к форуму. Никак не могу совладать с выводом данных из БД и обработки...

работа с массивом
Пример массива: $s='по Красивых молдавских партизан к Мира от Федора Сумкина'; мне нужно...

Работа с массивом
Объясните пожалуйста, каким способом можно: 1)вернуть массив только с цифрами? 2) сделать первые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru