Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 10:37   #1
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию array_slice и array_splice

Не пойму, почему ответы одинаковы?
array_slice должен возвращать то, что вырезали из массива, а array_splice-то что осталось в массиве, после того, как что то вырезали из него(как я понял)
Если так, почему одинаковые ответы в скрипте
Код:
<?php

$input = array("red", "green", "blue", "yellow");
$b=array_slice($input, 2);
$c=array_splice($input, 2);
echo "<pre>";
print_r($b);
print_r($c);
echo "</pre>"
?>
Отв:
Array
(
[0] => blue
[1] => yellow
)
Array
(
[0] => blue
[1] => yellow
)
Gen_r_questions вне форума Ответить с цитированием
Старый 28.05.2011, 11:03   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

не совсем так
вот прочтите
у вас после первого вызова массив остается длинной 2 ... и вторая функця не может ничего удалить или отбросить - вот и тот же результат
... попробуйте так
Цитата:
$input = array("red", "green", "blue", "yellow");
$b=array_slice($input, 2);
$input = array("red", "green", "blue", "yellow");
$c=array_splice($input, 2);
echo "<pre>";
print_r($b);
print_r($c);
echo "</pre>"
?>

Последний раз редактировалось ADSoft; 28.05.2011 в 11:06.
ADSoft вне форума Ответить с цитированием
Старый 28.05.2011, 11:31   #3
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

все равно одинаковый результат
Gen_r_questions вне форума Ответить с цитированием
Старый 28.05.2011, 11:48   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

ну - код да, неверный, торопился.... смысл в том... что это процедура.. а не функция....
она не возвращает результат... а применяет его к переданному массиву

выведите массив $input после каждой array_ и поймете
ADSoft вне форума Ответить с цитированием
Старый 28.05.2011, 12:02   #5
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

Ну если не возвращать значение, тогда правильно работает
Цитата:
смысл в том... что это процедура.. а не функция....
А как определить процедура перед тобой или функция ?
В мануалах написано array array_splice ( array &input, int offset [, int length [, array replacement]] ), т.е возвращает массив, как будто это функция, а не процедура

Последний раз редактировалось Gen_r_questions; 28.05.2011 в 12:07.
Gen_r_questions вне форума Ответить с цитированием
Старый 28.05.2011, 15:56   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
А как определить процедура перед тобой или функция ?
В мануалах написано array array_splice ( array &input, int offset [, int length [, array replacement]] ), т.е возвращает массив, как будто это функция, а не процедура
Насчёт "возвращает массив" - это как посмотреть, на самом деле тут имеется ввиду, что в результате действий, выполняемых этой функцией, вы получаете измененный исходный массив - тоесть, вроде не соврали в описании, но момент скользкий.

А так - нужно просто смотреть примеры использования этой функции, приведенные в тех же мануалах - потому как в PHP очень много путаницы с функциями.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск