что то ищешь тут паря?

пятница, 22 февраля 2013 г.

Теперь приколы по пхп от другог учителя))))

$array = [
'color' => 'green',
'amount' => 10,
];

foreach ($array as $key => $value) {
// key => color, value => green
// $color = green
$$key = $value;
}

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

foreach ($array as $key => &$value){
// $model = 'BMW';
// $model1 = &$model;
// $model1 = 'Lexus';
// $value = &$array[$key];
// $value = 'asdasdasd';
// $key = 'color', &$value =>
$value = strtoupper($value);
// echo $array['color'] . '-' . $value;
}
вообще цикл форич перебирает копию массива
НО ТУТ ОН ПЕРЕБИВАЕТ ЯЧЕЙКИ ПАМЯТИ МАССИВА В КОТОРЫХ НАХОДЯТСЯ ПЕРЕМЕННЫЕ.такой пример интересный.


ВОт собственно говоря сегодня прошли рекурсивную функцию

$array = [1,2,3,[77,88,99,[111,222,333]]];

function printArray($array){

$result = '';

foreach ($array as $value) {

if (is_array($value))
{
$result .= printArray($value);
}
else
{
$result .= $value . '<br>';
}
}

return $result;

}

echo printArray($array);

вот она такая тут)

А вот вам пожалуйста и анонимная функция

$array = [1,2,3,4,5];

$cube = array_map(function($item){
return $item * $item;
}, $array);


так называемый коллбек(callback)


а вот мы сами написали функцию array_map

$array = [
'color' => 'red',
'count' => 10,
];

function my_array_map(callable $func, array $array)
{
$arr = [];

foreach ($array as $key => $value) {
$arr[$key] = $func($key, $value);
}

return $arr;
}

кроме того мы указали что передается в переменной  $func именно функция
и именно второй передается массив!

function getArchiver($os, $archive_name)
{
echo $archive_name;

if ($os === 'windows')
{
return function(){
echo 'WINRAR';
};
}
else if ($os === 'linux')
{
return function($archive_name) use($archive_name) {
echo 'TAT.GZ';
echo $archive_name;
};
}
}


а тут мы показали как передавать функции переменные из
локальной области видимости другой функции)))



function getArchiver($os, $archive_name)
{
echo $archive_name;

if ($os === 'windows')
{
return function(){
echo 'WINRAR';
};
}
else if ($os === 'linux')
{
return function($archive_name) use($archive_name) {
echo 'TAT.GZ';
echo $archive_name;
};
}
}


вот такой вот урок был.буду домашку делать на выходных)

Комментариев нет:

Отправить комментарий