Нужно обьяснить.

Статус
В этой теме нельзя размещать новые ответы.

Алексей Рябченко

Постоялец
Регистрация
9 Фев 2008
Сообщения
75
Реакции
2
У меня такая просьба может ли кто разжевать что происходит в вот этой строке
PHP:
$hosts[$prefs['host']][] = $link;

Пример:
PHP:
$links = explode("\n", $links);
foreach($links as $link){
	                 $prefs = parse_url($link);
				      $hosts[$prefs['host']][] = $link;
			}
 
Банальное присваивание значения массиву. Первые главы любого учебника.

Код:
$links = explode("\n", $links);			// разбить переменную $links по строкам
foreach($links as $link){				// пройтись по каждой строке
	$prefs = parse_url($link);			// в $prefs записать информацию о URL из строки
	$hosts[$prefs['host']][] = $link;	// в $hosts сохранить имя хоста
}

А вот этот фразмент наглядно покажет что происходит:
Код:
echo '<pre>';
$links = explode("\n", $links);			// разбить переменную $links по строкам
echo 'Список ссылок: '; print_r($links); echo "\n";
foreach($links as $k => $link){				// пройтись по каждой строке
	$prefs = parse_url($link);			// в $prefs записать информацию о URL из строки
	echo 'Ссылка №'.$k.': <u>'. $links. '</u> распотрашена как: '; print_r($prefs); echo "\n";
	$hosts[$prefs['host']][] = $link;	// в $hosts сохранить имя хоста
}
echo 'Результат всего этого: '; print_r($hosts); echo "\n";
echo '</pre>';
 
в двухмерный массив добавляется значение. пустые скобки квадратные говорят - взять значение последнего индекса и прибавить 1.

а в указанном примере из ссылок выдираются домены и формируется массив массивов, где индекс - это домен, а значение массив ссылок с этим доменом
 
в $hosts сохранить имя хоста - а что находитсяь или должно находится в пустых квадратных скобках.

И что получается
PHP:
 $hosts[имя хоста][1 и т.д] = $link;

извините поспешил с вторым вопросом.
 
короче, чтобы было понятнее

$lala[] = 'x';
$lala[] = 'x';
$lala[] = 'x';
$lala[] = 'x';

есть тоже самое что


$lala[0] = 'x';
$lala[1] = 'x';
$lala[2] = 'x';
$lala[3] = 'x';

то есть индексы сами подставляются по порядку, не нужно лишних телодвижений
 
В массиве $hosts собираются все ссылки из исходного списка, только разбитые по домену.
Например, при обращении $hosts["domain.ru"] будет доступен список(массив с числовым индексом) всех ссылок на domain.ru. Каждая отдельная ссылка будет доступна $hosts["domain.ru"][0], $hosts["domain.ru"][1] и т.д.
 
поскольку тема по массивам, то допишу и свой вопрос:

есть абстрактный массив:
a[5]=х1
a[6]=х2
a[12]=х3
a[68]=х4
a[45590]=х5

какой самый простой способ получить эти цифры - 5,6,12,68,45590, тоесть значения индексов?
 
Есть функция array_keys()
 
Кое что написал. но методом тыка. так как в этих массивах я плохо розбираюсь.

PHP:
<?php
  //if (isset($_POST[''])) {$ = $_POST[''];}
  if (isset($_POST['linki_p'])) {$linki_p = $_POST['linki_p'];}
  if (isset($_POST['name_p'])) {$name_p = $_POST['name_p'];}
  if (isset($_POST['rozmer_p'])) {$rozmer_p = $_POST['rozmer_p'];}
  if (isset($_POST['mb'])) {$mb = $_POST['mb'];}
  if (isset($_POST['gb'])) {$gb = $_POST['gb'];}
     $rozmer_p = trim($rozmer_p); // удаление конечных и начальных пробельных символов
      $rozmer_p = str_ireplace(".",",",$rozmer_p); // если в поле где то присутствует точка заменяем ее на запятую
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Оформление ссылок</title>
<link href="css.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php

				$links = "$linki_p";
				 $links = explode("\n", $links);


 if (isset($_POST['go']))
 {
?>


<table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="tb">
  <tr><td align="center" valign="top">
  <textarea cols='72' rows='10'><?
  echo"<p><br></p><br><br /><br /><p>[size=2][color=#FF0000][b]Скачать $name_p ($rozmer_p MB):[/b][/color][/size]</p><p><br /></p>[hide][quote]";

            foreach($links as $link){
	                 $prefs = parse_url($link);
				      $hosts[$prefs['host']][] = $link;
			}

			foreach($hosts as $host => $link){  // $link[0] - Ссылки, $host - Название сервера

                   $host=str_ireplace("www.","",$host);
                    $host=ucfirst($host);
                     $host=str_ireplace("rapidshare.com","[color=#001A49]Rapidshare.com[/color]",$host);
			          $host=str_ireplace("depositfiles.com","[color=#FF9933]Depositfiles.com[/color]",$host);
					   $host=str_ireplace("LetItBit.net","[color=#FF66CC]LetItBit.net[/color]",$host);
					    $host=str_ireplace("VIP-file.com","[color=#0033FF]VIP-file.com[/color]",$host);
                         $host=str_ireplace("sms4file.com","[color=#5A7C0B]Sms4file.com[/color]",$host);
                          if ($host != "[color=#001A49]Rapidshare.com[/color]" ||
                                        "[color=#FF9933]Depositfiles.com[/color]" ||
                                         "[color=#FF66CC]LetItBit.net[/color]" ||
                                          "[color=#0033FF]VIP-file.com[/color]" ||
                                           "[color=#5A7C0B]Sms4file.com[/color]")
                          {
                              $host=str_ireplace("$host","[color=#666666]".$host."[/color]",$host);
                          }

	            if(count($link) == 1){
	                $l=$l+1;
	                 if ($l == 1){echo " c  ";}else{echo "&nbsp;|&nbsp;";}
	                  echo "[size=2][b][url=".$link[0]."]".$host."[/url][/b][/size]";

	            }else{


	            	 echo "<p><br /></p>c  [size=2][b]".$host."[/b][/size]\n";

			          foreach($link as $index => $linki){ // $linki - Ссылкм в частях
	                           $index=$index+1;
	                            if ($index == 1){}else{echo "&nbsp;+&nbsp;";}
	                             echo "[size=1][b][url=http://".$linki."][color=#666666]Часть ".$index."[/color][/b][/size][/url]";

	                  }

	            }

			}
            echo "<p><br /></p><p><br /></p>[spoiler=Список ссылок]".$linki_p."[/spoiler][/quote][/hide]";
?></textarea>
<?
 }
?>




	   </td>
    </tr>
	</table>



<form action="" method="post">
<table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="tb">
  <tr>
    <td colspan="2" class="tb_2">Сылки:</td>
  </tr>
  <tr>
    <td width="200" class="td_1">Название проги:</td>
    <td width="400"><input name="name_p" type="text" value="<?=$name_p?>" size="67"></td>
  </tr>
  <tr>
    <td class="td_1">Размер:</td>
    <td><input name="rozmer_p" type="text" value="<?=$rozmer_p?>" size="10">
      </td>
  </tr>
  <tr>
    <td colspan="2">
    <textarea name="linki_p" cols="72" rows="10"><?=$linki_p?></textarea>
</td>
  </tr>
  <tr>
    <td colspan="2"><input name="go" value="Отправить" type="submit"></td>
  </tr>
</table>
</form>


</body>
</html>

Что из этого вышло, если используем этом код:

Код:
[size=2][color=#FF0000][b]Скачать xxxxxxxxxxxxxx (23,0 MB):[/b][/color][/size] 

c  [size=2][b][url=http://vip-file.com/xxxxxxx
][color=#666666][color=#0033FF]VIP-file.com[/color][/color][/url][/b][/size]

c  [size=2][b][color=#666666][color=#FF66CC]LetItBit.net[/color][/color][/b][/size]
[size=1][b][url=http://http://letitbit.net/xxxxxxx
][color=#666666]Часть 1[/color][/b][/size][/url] + [size=1][b][url=http://http://letitbit.net/xxxxxxx
][color=#666666]Часть 2[/color][/b][/size][/url]

c  [size=2][b][color=#666666][color=#FF9933]Depositfiles.com[/color][/color][/b][/size]
[size=1][b][url=http://http://depositfiles.com/xxxxxxx
][color=#666666]Часть 1[/color][/b][/size][/url] + [size=1][b][url=http://http://depositfiles.com/xxxxxxx
][color=#666666]Часть 2[/color][/b][/size][/url]

c  [size=2][b][color=#666666][color=#001A49]Rapidshare.com[/color][/color][/b][/size]
[size=1][b][url=http://http://rapidshare.com/xxxx
][color=#666666]Часть 1[/color][/b][/size][/url] + [size=1][b][url=http://http://rapidshare.com/xxx
][color=#666666]Часть 2[/color][/b][/size][/url] | [size=2][b][url=][/url][/b][/size]

Есть ли у кого вопросы, поправки, и т.д.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху