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

Форум PHP

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

 

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

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

тема: Сформировать из элементов массива адресную строку
 
 автор: ZeeG   (11.08.2007 в 00:20)   письмо автору
 
 

Доброго всем утра. Я новичок и мало что знаю в PHP (пока).
К примеру у нас есть массив $test, в нем 4 элемента. Для того чтоб вывести все элементы массива используем конструкцию

     while (list($key, $val) = each($test))
     {
         echo $key.'='.$val.'';
     }

Вопрос может показаться глупым, но я на него ума не приложу как ответить:
Как привести значения всех элементов массива в одну переменную?
Спасибо

   
 
 автор: kasmanaft   (11.08.2007 в 00:34)   письмо автору
 
   для: ZeeG   (11.08.2007 в 00:20)
 

Да-да, доброе утро =)

Вопрос, действительно, сложен для понимания...
Можбыть, поможет функция implode().. а если нет - приведите пример, плз.

   
 
 автор: Proger   (11.08.2007 в 00:43)   письмо автору
 
   для: ZeeG   (11.08.2007 в 00:20)
 

массив как я понял одномерный ;)
вот пример:


$per = null;
foreach ($test as $gg) {
$per .= $gg;
}

echo $per;

   
 
 автор: Trianon   (11.08.2007 в 00:59)   письмо автору
 
   для: ZeeG   (11.08.2007 в 00:20)
 

>Как привести значения всех элементов массива в одну переменную?

Вопрос не глупый, он просто неряшливо задан.
Что значит привести значения в переменную?
Приведите пример.

PS. конструкция foreach($test as $key=>$val) смотрится проще и понятнее , на мой взгляд.

   
 
 автор: Proger   (11.08.2007 в 01:04)   письмо автору
 
   для: Trianon   (11.08.2007 в 00:59)
 

ну мне тоже, но навсякий решил не мучать человека лишними там => и пр.
Ключи массива он же не просил выводить, потому я их опускаю ;)

   
 
 автор: ZeeG   (11.08.2007 в 10:02)   письмо автору
 
   для: Proger   (11.08.2007 в 01:04)
 

Массив у меня примерно такой:

$test = array ('A' => '1',
                         'B' => '2',
                         'C' => '3',
                         'D' => '4');

Вывод всех элементов массива:

     while (list($key, $val) = each($test))
     {
         echo $key.'='.$val.'';
     }

или, как предложил Trianon

foreach($test as $key=>$val)

Задача в следущем, я хотел бы сократить и привести код вида

$link =DIR.'test.php?A=1&B=2&C=3&D=4; // переменных может быть намного больше

к виду

$link =DIR.'test.php?'.$vars.''; // переменных может быть намного больше

   
 
 автор: CrazyAngel   (11.08.2007 в 10:09)   письмо автору
 
   для: ZeeG   (11.08.2007 в 10:02)
 

эм...

<?php
$test 
= array ('A' => '1''B' => '2''C' => '3','D' => '4');
$getVARS     "?";
$link            DIR.'test.php?';
foreach(
$test as $key=>$val):
    
$getVARS     .= $key."=".$val."&";
    
$link            .= $key."=".$val."&";
endforeach;
echo 
DIR.'test.php'.$getVARS.'<br>'
echo 
$link
?>

   
 
 автор: cheops   (11.08.2007 в 10:11)   письмо автору
 
   для: ZeeG   (11.08.2007 в 00:20)
 

Можно воспользоваться следующей конструкцией
<?php
  
echo implode(" "$test);
?>

   
 
 автор: ZeeG   (11.08.2007 в 11:51)   письмо автору
 
   для: cheops   (11.08.2007 в 10:11)
 

Да но мне требуется пара из $key=$val, а не просто $val.
В конце цикла, как я понимаю, таких пар должно быть 4. Вот их то мне и надо выразить одной переменной.
Что я сделал:

<?php
     $link 
DIR.'test.php?'// ссылка
     
$i=0;
     
$n count($test); // кол-во эл. массива
     
for($i=1$i<=$n$i++){
     foreach(
$test as $key=>$val)
       {
          
$i<$n$vars="$key=$val&" $vars="$key=$val"// думаю правильно. Главное коротко и понятно
          
$i++;
       }
     }
?>

Проблема у меня теперь с тем, что при написании

<?php
header
("Location: ".$link."".$vars."");
?>

Отображается ТОЛЬКО последний элемент массива
Что делать?

   
 
 автор: Unkind   (11.08.2007 в 12:02)   письмо автору
 
   для: ZeeG   (11.08.2007 в 11:51)
 

Замените вот это:

<?php
//...
     
$n count($test); // кол-во эл. массива 
     
for($i=1$i<=$n$i++){ 
     foreach(
$test as $key=>$val
       { 
          
$i<$n$vars="$key=$val&" $vars="$key=$val"// думаю правильно. Главное коротко и понятно 
          
$i++; 
       } 
     }
//...
?>


... на это:

<?php
//...
$vars = array();
foreach(
$test $as $param => $value$vars[] = $param "=" $value;
$vars implode("&"$vars);
//...
?>

   
 
 автор: ZeeG   (11.08.2007 в 12:23)   письмо автору
 
   для: Unkind   (11.08.2007 в 12:02)
 

Все работает, исправил только место

foreach($test as $param => $value)

Всем спасибо за помощь

   
 
 автор: Unkind   (11.08.2007 в 12:40)   письмо автору
 
   для: ZeeG   (11.08.2007 в 12:23)
 

Да, опечатался.

   
 
 автор: ZeeG   (11.08.2007 в 12:58)   письмо автору
 
   для: Unkind   (11.08.2007 в 12:40)
 

Все мы человеки. С кем не бывает.
Спасибо

   
Rambler's Top100
вверх

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