Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Работа с массивом..
 
 автор: а-я   (28.07.2010 в 12:28)   письмо автору
 
 

1ый вопрос.
Есть многомерный массив. И из него надо удалить все записи, если нет значения, т.е. пустая строка..""

2ой вопрос.
Как отличить обычный массив от многомерного? т.е. если в массиве есть другие массивы, не пробегаясь по ним.

  Ответить  
 
 автор: sms-send   (28.07.2010 в 12:43)   письмо автору
 
   для: а-я   (28.07.2010 в 12:28)
 

> удалить все записи, если нет значения
Удалить все записи если где нет значения?

> Как отличить обычный массив от многомерного?
Вообще в PHP все массивы одномерные, бывают вложенные массивы, но многомерностью это можно назвать только условно.

> т.е. если в массиве есть другие массивы, не пробегаясь по ним.
По-другому никак, только если где то дополнительно хранить тип массива.

  Ответить  
 
 автор: а-я   (28.07.2010 в 12:54)   письмо автору
 
   для: sms-send   (28.07.2010 в 12:43)
 

>> удалить все записи, если нет значения
>Удалить все записи если где нет значения?
>
Да.. т.е. например

<?php
$data 
= array(array('',' '123), 23''' ');
?>

  Ответить  
 
 автор: sim5   (28.07.2010 в 14:17)   письмо автору
 
   для: а-я   (28.07.2010 в 12:54)
 

В любом случае нужно обходить массив:
<?
$data 
= array(array('',' '123), 23''' ');

foreach(
$data as $k=>$v)
  if(
is_array($v)) $data[$k] = array_diff(array_map('trim'$v), array(''));
  else if(!
trim($v)) unset($data[$k]);

print_r($data);

  Ответить  
 
 автор: sim5   (28.07.2010 в 18:14)   письмо автору
 
   для: а-я   (28.07.2010 в 12:28)
 

2ой вопрос
<?
$data 
= array(array('',' '123), 23''' ');
echo 
array_search('Array'array_map('trim'$data))!==false "Массив с вложениями" "Одномерный массив";

  Ответить  
 
 автор: sms-send   (28.07.2010 в 18:31)   письмо автору
 
   для: sim5   (28.07.2010 в 18:14)
 

Ненадёжный способ, тогда уж gettype вместо trim.

  Ответить  
 
 автор: sim5   (28.07.2010 в 18:32)   письмо автору
 
   для: sms-send   (28.07.2010 в 18:31)
 

B чем он не надежен?

  Ответить  
 
 автор: sms-send   (28.07.2010 в 18:33)   письмо автору
 
   для: sim5   (28.07.2010 в 18:32)
 

$data = array(' Array ', 2, 3, '', ' '); // "Массив с вложениями"

  Ответить  
 
 автор: sim5   (28.07.2010 в 18:37)   письмо автору
 
   для: sms-send   (28.07.2010 в 18:33)
 

И array(2, 3, '', ' ') для решения array_map('gettype', $data) всегда будет Array.
Сейчас найдем другое решение.

  Ответить  
 
 автор: sms-send   (28.07.2010 в 18:43)   письмо автору
 
   для: sim5   (28.07.2010 в 18:37)
 

Да вроде всё работает как надо..
echo in_array('array', array_map('gettype', $data)) ? "Массив с вложениями" : "Одномерный массив";

  Ответить  
 
 автор: sim5   (28.07.2010 в 18:49)   письмо автору
 
   для: sms-send   (28.07.2010 в 18:43)
 

array_search('array'.... из-за.... должно быть в нижнем регистре, потому и не работало.

  Ответить  
 
 автор: а-я   (29.07.2010 в 07:56)   письмо автору
 
   для: а-я   (28.07.2010 в 12:28)
 

ого)) спасибо всем) то что надо!)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования