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

Форум PHP

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

 

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

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

тема: преобразовать массив в одномерный?
 
 автор: web777   (18.12.2014 в 20:23)   письмо автору
 
 

имею строку которая делиться через запятую
$str= 'test1,test2,test3,test4,test5';

далее перевожу в массив
$arr = explode(',',$str);

который выглядит таким образом
Array
(
    [0] => test1
    [1] => test2
    [2] => test3
    [3] => test4
    [4] => test5
)


но как сделать массив чтобы получился без значений только ключи, тоесть таким образом, за место ключей значения

Array
(
    [test1] 
    [test2]
    [test2] 
    [test3] 
    [test4] 
)


или строчкой
array('test1','test2','test3','test4','test5')

  Ответить  
 
 автор: confirm   (18.12.2014 в 20:37)   письмо автору
 
   для: web777   (18.12.2014 в 20:23)
 

Что-то вы не туда. Массив не может быть без ключей или индексов. Это правильный массив:

Array 

    [0] => test1 
    [1] => test2 
    [2] => test3 
    [3] => test4 
    [4] => test5 
)


а так:

Array 

    [test1]  
    [test2] 
    [test2]  
    [test3]  
    [test4]  
)


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

  Ответить  
 
 автор: web777   (18.12.2014 в 20:49)   письмо автору
 
   для: confirm   (18.12.2014 в 20:37)
 

ситуация такая, мне нужно сделать сравнение на совпадение, если имеется в данном массиве такое значение выполнять, иначе пропускать. Вот у меня имеется такой код


foreach($arr as $v) 
{
  if(in_array($v,array('test1','test2'))){ 
  
  }

}


данный код работает если массив такой array('test1','test2')

но если будет таким
Array  
(  
    [0] => test1  
    [1] => test2  
... 
)


функция in_array уже не может делать сравнения. Или может я не так делаю?

  Ответить  
 
 автор: confirm   (18.12.2014 в 20:55)   письмо автору
 
   для: web777   (18.12.2014 в 20:49)
 

Что за глупости, где это вы такое прочли?

Функция in_array() ищет значение в массиве равное указанному, и ей не важно индексный это массив или ассоциативный. Вот если бы ваш массив имел ключами test1, test2, и т.д., вот тогда бы in_array() не нашел бы в нем значения указанного. В этом случае array_key_exists нужен.

PS. Только учтите, in_array возвращает результат поиска найдено/не найдено, если вам нужен не сам факт есть или нет, а позиция в которой было найдено, то для этого служит array_search.

  Ответить  
 
 автор: web777   (18.12.2014 в 21:12)   письмо автору
 
   для: confirm   (18.12.2014 в 20:55)
 

мне нужно выводить пункт в меню только разрешённый данному пользователю, поэтому производится проверка, если значение совпадает, пункт отображается, если упоминания не имеется, то пункт не выводится

    [accessActions] => 0
    [accessRoles] => 1
    [accessUsers] => 2
    [managerAccess] => 3
    [Settings] => 4
    [settingBoard] => 5
    [updateBoard] => 6
    [categoryNews] => 7
    [createNews] => 8
    [cropPhotoNews] => 9
    [deleteNews] => 10
    [deletePhotoNews] => 11
    [listNews] => 12
    [listPhotoNews] => 13
    [readNews] => 14
    [News] => 15
    [settingNews] => 16
    [updateNews] => 17
    [updatePhotoNews] => 18
    [uploadPhotoNews] => 19
    [Currency] => 20
    [Directories] => 21
    [Geo] => 22
    [Lists] => 23
    [Photo] => 24


array_search ищет по фразам, а мне нужно точное совпадение. Например если сравнивается 'News' то array_search найдёт такие пункты News, updateNews, settingNews, listNews, тоесть не только News

попробую ещё раз попытаться с in_array() поэксперементировать

спасибо

  Ответить  
 
 автор: confirm   (18.12.2014 в 21:35)   письмо автору
 
   для: web777   (18.12.2014 в 21:12)
 

array_search не разбирает строку регулярными выражениями, поэтому с чего вы взяли что он так поступит? И в вашем массиве settingNews и другие, это не значения, а ключи, и array_search тут никаким боком вам не поможет, для этого нужно искать совпадения ключа массива - array_key_exists. Я же писал об этом.

  Ответить  
 
 автор: web777   (18.12.2014 в 21:54)   письмо автору
 
   для: confirm   (18.12.2014 в 21:35)
 

спасибо, теперь всё заработало, последний код с in_array странно почему ранее не срабатывало

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

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