![](https://htmlforum.dev/uploads/set_resources_18/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
kilogram
-
Posts
120 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Calendar
Store
Posts posted by kilogram
-
-
-
-
-
Вроде разобрался.
<?php
$name = 'Obama';
$post = 'deputy';
$town = 'Washington';
$city = 'USA';
$t = array("name"=>"Дженефер Лопес","post"=>"певица",'town'=>'Kiev','city'=>'Ukraine');
extract($t, EXTR_OVERWRITE);
echo $town.' - это столица страны '.$city.'<br />';
echo $name.' занимает должность - '.$post.'<br /><br />';
$name = 'Leonardo Da Vinci';
$post = 'artist';
$town = 'Italy';
$city = 'Rome';
$t = compact("name",'post','town','city');
echo $t['town'].' - это столица страны '.$t['city'].'<br />';
echo $t['name'].' занимает должность - '.$t['post'].'<br />';
?> -
-
Ещё небольшое уточнение. Почему если заменить это:
array_splice($input,1,2,$mas);
echo '<pre>'.print_r($input,1).'</pre>';на это
$d = array_splice($input,-2,2,$mas);
echo '<pre>'.print_r($d,1).'</pre>';Почему обрезания значений элементов не произойдет, а выведет просто последние 2 элемента массива без изменений?
Значения последних 2-ух элементов массива $input не меняются почему то
-
Вот так тоже переименовывает ключи в числа.
$mas = array("Имя1"=>"orange","Имя2"=>"magenta");
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow");
array_splice($input,1,2,$mas);
echo '<pre>'.print_r($input,1).'</pre>';Array(
[color1] => red
[0] => orange
[1] => magenta
[color4] => yellow
)
-
А так чтоб сохранялись ключи при замене существующего массива не получиться?
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow");
array_splice($input,1,count($input),"orange");
echo '<pre>'.print_r($input,1).'</pre>';Результат:
Array
(
[color1] => red
[0] => orange
)Как сделать чтоб не нумировался ключ с нуля, а подставлялось ассоциативное имя ключа?
-
То есть при вызове функции array_slice я могу передать этой функции 4 параметра, но обязательно их должно быть как минимум 2?
array_slice ( $array ,2,3, true);
-
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
Как читать правильно эту строку в документации PHP? Первый параметр означает, что переменная должна передаваться как массив, а вот второй параметр загадочно как-то, расшифруйте.
-
Вот так правильнее, проверил секундомером с учетом если 10 млн номер индекса последний, код запускается чере 14,16 сек. в браузере.
<?php
$trans = array(
0 => array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3 => 500,
4 => 'Andrey',
10000000 => array("Вася","Петя","Коля")
);
end($trans);
$max = key($trans);
for ($i = 0; $i <= $max; $i++)
{
if (!array_key_exists($i, $trans)) continue;
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}
?> -
Ух-ты, вот так получилось.
<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);
if(!empty($r))echo 'не существует';
echo '<br />';
for ($i = 0; $i < count($trans); $i++)
{
if(empty($trans[$i])) continue;
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}
?> -
Я быстро спросил, сразу просто не вышло, сейчас подумал, получилось.
Вот так заработало.
<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);
foreach($trans as $x)
{
if (is_array($x))
foreach ($x as $y)
echo $y . ' ';
else
echo $x . ' ';
}
echo 'Я справился!';
echo '<br />';Если через фор попробовать вывести вот так, не захочет, захочет только если поменять индекс 8 на 5, странно как-то. 5=> array("Вася","Петя","Коля")
for ($i = 0; $i < count($trans); $i++)
{
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
} -
Не получается вывести двумерный массив. Читал вроде в учебнике что циклы могут не обязательно одинаковой длины строки и стобцы быть, вот попробовал написать код, чего-то не срабатывает.
<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);
foreach($trans as $x)
foreach($x as $y)
echo $x.' '.$y.' ';
?> -
Прочитал я это в документации. Я так понял интерпретатор языка ПХП когда видит название переменной, а за ней скобки, подставляет значение этой переменной в название этой переменной со скобками,если значение этой переменной совпало с названием такой функции описаной где-то в коде.
-
Попробовал написать такой код, который вычисляет квдадрат числа.
function santa($n)
{
return $n*$n;
}
function balta($n)
{
return $n(5);
}
echo balta("santa");
echo '<br />';Как-то странно так получилось, ради интереса написал santa в параметре функции и ошибок не выдало.
Это что, получается я передал всю функцию санта в функции балта?
В пхп разве если при вызове писать что-то в кавычках и оно совпадет с названием функции ранее где-то описаной в коде выше то передастся не строка ,а сама функция в качестве аргумента?
-
<?php
$mas = array(5,3,-1,4,2,-300,6,-500,-100);
function sos($a1,$a2)
{
return $a2 - $a1;
}
function dobavka(&$mas, $func){
sortirovka($mas, 0, count($mas)-1, $func);
}
function sortirovka(&$mas,$min,$max,$func){
$i = $min;
$j = $max;
$x = $mas[($min+$max)/2];
do{
while($func($mas[$i], $x)<0) ++$i;
while($func($mas[$j], $x)>0) --$j;
if($i<=$j){
$element = $mas[$i];
$mas[$i] = $mas[$j];
$mas[$j] = $element;
$i++; $j--;
}
}while($i<=$j);
if($min<$j) sortirovka($mas,$min,$j, $func); //начало с серединой
if($i<$max) sortirovka($mas,$i,$max, $func); // середина с концом
}
dobavka($mas, 'sos');
foreach($mas as $rez)
echo $rez.' '.' ';
?>Смущает, как в переменную $func можно добавить круглые скобки и записать выражение?
while($func($mas[$i], $x)<0) ++$i;
while($func($mas[$j], $x)>0) --$j;Что это означает? С функцией понимаю ,а вот с переменной, как она со скобками и внутри выражение?
-
То есть если название файла будет называться 0.txt может произойти выход из цикла случайно если не поставить сравнение типов с булевым значением false?
-
!== - данные не должны быть эквивалентны
while(false !== ($e=readdir($d)) )
Если $e не равно типу бул, значению фолс. А зачем здесь проверять на тип?
Какие элементы с какими проверяются?
-
<?php
function sos($f1,$f2){
if(is_dir($f1) && !is_dir($f2)) return -1;
if(!is_dir($f1) && is_dir($f2)) return 1;
if($f1<$f2) return -1; elseif ($f1>$f2) return 1;
else return 0;
}
$d = opendir('.');
while(false !== ($e=readdir($d)) )
$files[$e] = filesize($e);
uksort($files,"sos");
print_r($files);
?>НЕ понятно вот это место: while(false !== ($e=readdir($d)) )
Что это за сравнение? Как расшифровывается строка?
-
На локальном компьютере возле файла index.php лежит файл 1.txt, он открывается если ввести путь: http://text.ru/1.txt Зарегистрировался на бесплатном хостинге PHP, кинул также туда 1.txt, ввожу такое:
http://santa.comoj.com/1.txt браузер ХРОМ выдает
Ошибка. Ссылка не работает.
-
function p($n){
$n = 0;
if($n<6) {echo $n; $n++; } else {return false; }
}
p(5);Как написать рекурсивную функцию не испульзуя какие-нибудь циклы? Пробую, выводит только первый раз и все.
-
1
-
-
<html><body>
<?php
$st = "
<strong>Жирный жираф</strong>
<tt>Моноширинный текст</tt>
<a href='http://www.dklab.ru' tatget='_blank'>Ссылка</a>
a<x && y>d
";
echo "Исходный текст: $st";
echo "<hr> После удаления тегов:".strip_tags($st,"<tt><a><target>");
?>
</body></html>Нужно чтоб ссылка открывалась в новом окне после обработки текста функцией strip_tags которая удаляет ненужные теги из строки. Во втором параметре, в котором необходимо укзаать какие теги не должно удалять,я указал, но при нажатии на ссылку она не открывается в новом окне хоть target указал чтоб открывало в новом окне. Почему?
-
1
-
-
Эту задачу решает по идее функция str_replace. Я хотел например в тексте, одни слова переносить и вставлять между другими словами.
-
1
-
РАНДОМ
in PHP
Posted · Edited by kilogram
Если она определена дальше, почему тогда выдает ошибку что переменная не определена при её выводе?