[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись в массив из другого массива
SnowWind
Привет.

При работе функции происходит запись в массив $HPK1_curve = array("PK", "HPK");
допустим там записалось по 3 значения в PK и в HPK.
Функция окончена и после неё нужно записать данные из этого массива в другой массив $PK_array=array("PK", "HPK", "massage"); , с уже имеющимися данными, в том же порядке как они были записаны в $HPK1_curve в те же индексы. Как это сделать ?



Спустя 1 час, 17 минут, 27 секунд (11.03.2011 - 20:16) sergeiss написал(а):
Чуть подробнее опиши задачу, а то не совсем понятно, что нужно. И заодно покажи, как ты сам пытался сделать.

Спустя 11 часов, 43 минуты, 54 секунды (12.03.2011 - 08:00) SnowWind написал(а):
Да никак я ещё не пытался, потому как вообще не понимаю как это сделать :)
Ещё раз
Вот у нас в начале кода определяется массив
<?php
$PK_array=array("PK", "HPK", "massage");

дальше идёт выполнения каких то действий всяких вычислений, при которых результаты вычислений попадают в данный массив, каждые в свои индексы.
Затем в середине программы попадается функция, результаты вычислений которой записываются в массив - $HPK1_curve = array("PK", "HPK"); который определяется только в этой функции.

Функция окончила работу и мне нужно данные из массива $HPK1_curve переписать в массив $PK_array, в том же порядке, в котором они были записаны при работе функции, в те же самые индексы.

Спустя 4 часа, 37 минут, 3 секунды (12.03.2011 - 12:37) sergeiss написал(а):
Вроде понял smile.gif Ты хочешь при совпадении индексов взять данные из 2-го массива и записать в первый туда, где такие же индексы?
Как один из вариантов - передать массив в функцию "по ссылке". Тогда ты сразу же напрямую будешь менять нужные значения основного массива.

Спустя 16 минут, 38 секунд (12.03.2011 - 12:54) SnowWind написал(а):
индексы у меня заведомо одинаковые.
Нужно что бы данные из первого массива записались во второй массив, в ТЕ ЖЕ индексы В ТОЙ ЖЕ последовательности.
Я так и не понял как сделать то?

Спустя 1 час, 26 минут, 25 секунд (12.03.2011 - 14:20) keovken написал(а):
SnowWind если честно, то я тоже ломал голову пытаясь понять условие.
Одинаково ли количество значений в массиве, например. Вот, посмотри и скажи
я правильно тебя понял?
$arr = array("name1","name2","name3");//извини, твои названия напугали
$arr2 = array("data1","data2","data3");

$c = 0;//счетчик для $arr2
foreach ($arr as $k)
{

$arr2[$c] = $k;
$c++;
}

Спустя 19 минут, 45 секунд (12.03.2011 - 14:40) SnowWind написал(а):
да, только индексы у 2х массивов одинаковые и в $arr уже есть какие-то значения...
я не понял для чего эта схема с foreach sad.gif

Спустя 18 минут, 4 секунды (12.03.2011 - 14:58) keovken написал(а):
SnowWind foreach перебирает массив $arr и поскольку является циклом, то поочередно меняет значения в $arr2 подставляя значения из $arr... По-моему это очевидно...

Спустя 5 часов, 7 минут, 38 секунд (12.03.2011 - 20:06) SnowWind написал(а):
А как из массива $arr2 вывести на экран data1 и data2 ?
foreach ($arr2['data1'] as $k)
{
echo "Данные в массиве $k";
}

Это выведет значения из data1, а как тут же вывести из data2 ?

Спустя 5 минут, 9 секунд (12.03.2011 - 20:11) neadekvat написал(а):
SnowWind, а вот я совсем не понял.
У вас везде массивы с числовыми индексами. А такое чувство, что вы ведете речь про ассоциативные..

Спустя 3 минуты, 40 секунд (12.03.2011 - 20:15) SnowWind написал(а):
Я сейчас говорю про тот пример, что мне дали...
А если честно, то я вообще не ощущаю разницу между ними ...

Спустя 2 минуты (12.03.2011 - 20:17) neadekvat написал(а):
SnowWind, давайте так: вы приведете пример первого массива (но используйте, пожалуйста, другие, понятные всем, имена. Ваш первый пример только вводит в заблуждение), приведете пример второго массива, а затем пример того, что в результате слияния должно получится.

Спустя 4 минуты, 28 секунд (12.03.2011 - 20:21) SnowWind написал(а):
Да блин....покажите мне как вывести циклом foreach из массива значения из первого индекса и из второго.

Спустя 7 минут, 2 секунды (12.03.2011 - 20:28) neadekvat написал(а):
Что, масленица еще продолжается?

$arr = array(
'data1' => array(
'some1-1',
'some1-2',
'some1-3'
),

'data2' => array(
'some2-1',
'some2-2',
'some2-3'
),
);


foreach($arr as $value)
foreach ($value as $value2)
echo $value2 . '<br />';

Спустя 3 минуты, 37 секунд (12.03.2011 - 20:32) SnowWind написал(а):
Вот у нас есть массив array = array("a", "b");
array['a'] = 1; array['b'] = 2;
Как из него вывести вот такую надпись - "значения записанные в массиве 1 и 2 " ???

Спустя 1 минута, 19 секунд (12.03.2011 - 20:33) SnowWind написал(а):
То что вы сейчас написали мне ВООБЩЕ не понятно sad.gif

Спустя 5 минут, 22 секунды (12.03.2011 - 20:39) neadekvat написал(а):
А теперь смотрите, что вы сделали:
$arr = array("a", "b");
$arr['a'] = 1;
$arr['b'] = 2;
print_r($arr);

Запустите этот код у себя. У вас явно проблема с пониманием основ по теме "Массивы".

Спустя 4 минуты, 42 секунды (12.03.2011 - 20:43) SnowWind написал(а):
ересь какая то sad.gif

Спустя 2 минуты, 26 секунд (12.03.2011 - 20:46) SnowWind написал(а):
ну тогда так
$arr = array("a", "b");
$arr['a'][] = 1;
$arr['b'][] = 2;
print_r($arr);

Спустя 3 минуты, 24 секунды (12.03.2011 - 20:49) neadekvat написал(а):
Да бросьте. Ересь - это когда 0,2 + 0,2 = 0,5. Да и там все объяснимо, если покапаться.

А тут все элементарно.
$arr = array('a', 'b');
эквивалентно
$arr = array(0 => 'a', 1 => 'b');
А вам, видмио, надо что-то вроде
$arr = array('a' => '', 'b' => '');

Цитата
ну тогда так

Это то, что вам надо, вы уверены?

Спустя 4 минуты, 55 секунд (12.03.2011 - 20:54) SnowWind написал(а):
Да, покажите на этом
$arr = array("a", "b");
$arr['a'][] = 1;
$arr['b'][] = 2;


как вывести 2 значения рядом "1 и 2".
Потом всёравно разберусь что к чему, но пока у меня это в голове не укладывается.

Спустя 5 минут, 13 секунд (12.03.2011 - 20:59) neadekvat написал(а):
Я показал, как вывести, на предыдущей странице.
А сейчас наша цель - чтобы вы поняли, что там с массивами происходит, и чтобы "в голове уложилось". Если вы отказываетесь прилагать умственные усилия к разбору элементарного базиса, то я отказываюсь помогать лентяю.
Итак, разбираемся с массивами?

Спустя 4 минуты, 11 секунд (12.03.2011 - 21:03) SnowWind написал(а):
Я не отказываюсь и благодарен вам за ваши усилия smile.gif
Просто у меня уже 3 часа ночи, а я не сплю из-за того, что хотел осуществить такой вывод в своей программе и пойти спать, но видимо уже через несколько часов, иначе у меня ваще голова не думает уже blink.gif Был бы рад связаться как-нибудь с вами ещё.

Спустя 6 минут, 37 секунд (12.03.2011 - 21:10) neadekvat написал(а):
SnowWind, утро вечера мудренее, разве вы не знаете? Приходите со свежей головой. В три ночи действительно сложно что-то понять, это я по собственному опыту :)

Да нет, давайте ограничимся форумом: во-первых, я могу сам ошибиться, но форумчане меня вовремя поправят, во-вторых, тут в принципе больше людей, которые могут дать ответ на вопрос, чем, например, у меня в аське :)

Спустя 10 минут, 27 секунд (12.03.2011 - 21:20) Andrey65 написал(а):
// не туда написал biggrin.gif

Спустя 2 часа, 8 минут, 6 секунд (12.03.2011 - 23:29) keovken написал(а):
SnowWind Если известно количество элементов в массиве (помнится я уже спрашивал об этом) то что мешает написать например так:
 echo 'значения в массиве '.$arr[0].' и '.$arr[1];

Спустя 6 часов, 37 минут, 4 секунды (13.03.2011 - 06:06) SnowWind написал(а):
Нет не известно сколько значений функция может поместить в него, в том то и дело. Мне нужно вывести значения записанные при работе функции, а потом скопировать их в основной массив

Спустя 1 час, 1 минута, 14 секунд (13.03.2011 - 07:07) SnowWind написал(а):
Какая то ерунда с выводом массива :blink: Вот кусок функции.

function HPK_after_curve ($KK, $NK2, $i2, $HKK, $M2, $END)
{
global $HPK_after_curve;
$HPK_after_curve = array("PK", "HPK"); // Вот интересующий меня массив
........................................................
while ($PK_next<$END-$END_rests)
{
$PK_info = $PK_next/100; $HPK_after_curve['PK'][] = $PK_info;
$HPK = $HPK + (100*$i2); $HPK_after_curve['HPK'][] = $HPK;
echo "<br> Высота ПК".$PK_info.": ".$HPK; // Вывод результатов расчёта в теле функции
$PK_next = $PK_next + 100;
}
.............................................................
}

return $HPK_after_curve;
}
$HPK_array = HPK_after_curve ($KK, $NK2, $i2, $HKK, $M2, $END);


foreach ($HPK_after_curve['PK'] as $values)
foreach ($HPK_after_curve['HPK'] as $values2)
echo "<br>IIIВысота ПК $values составляет:$values2"; // Вывод результатов из массива


Так вот, пока работает цикл в функции значения выводятся как нужно, НО если выводить их после работы функции из массива, то появляется куча лишних цифр! Если при работе функции выводится 10 цифр, то из массива выводится 100 цифр!
Почему так? :blink: Ведь значения записываются в массив в таком же порядке, как и в обычном порядке в обычной переменной, при работе ф-ции.

Спустя 3 часа, 47 минут, 16 секунд (13.03.2011 - 10:54) neadekvat написал(а):
Ох, SnowWind, я вас еще раз прошу - максимально упростите ваш код, выкиньте все, оставьте буквально исходный массив, произведенное с ним действие, то, что получилось, и что должно было получится.
При этом учтите, что мы не знаем то, что знаете вы, а потому и в вашу логику не всегда сможем вникнуть.

Спустя 3 часа, 31 минута, 16 секунд (13.03.2011 - 14:25) keovken написал(а):
SnowWind да, neadekvat прав, ты загнул можно проще сделать... Ну да ладно суть сейчас в том чтоб ты понял, с чем же эти массивы едят.
Во первых никогда так не делай
Цитата (SnowWind @ 13.03.2011 - 04:07)
foreach ($HPK_after_curve['PK'] as $values)

просто $HPK_after_curve без квадратных скобок! foreach сам разберется какой элемент считать следующим, ему нужно просто указать на массив.
Дальше, не называй функцию и переменную одинаковыми именами, я думаю ясно почему.. И кстати функцию вообще лучше переделать намудрил что зря


Спустя 7 минут, 15 секунд (13.03.2011 - 14:33) neadekvat написал(а):
Цитата (keovken @ 13.03.2011 - 11:25)
Во первых никогда так не делай

Про никогда - это вы загнули. Все-таки бывают случаи, когда надо перебрать конкретный элемент двухмерного массива.

Спустя 9 минут, 7 секунд (13.03.2011 - 14:42) SnowWind написал(а):
А я не знаю как упростить то huh.gif просто в этом цикле при работе функции выводится 10 значений, с помощью echo. И они же записываются в массив.
А когда уже после работы функции я вывожу их из массива, то получается 100! Ерунда какая то. Было в обычной переменной 10 высот, а в массиве их 100, причём все разные blink.gif

Спустя 5 минут, 18 секунд (13.03.2011 - 14:47) Trianon написал(а):
 foreach ($HPK_after_curve['PK'] as $values)
foreach ($HPK_after_curve['HPK'] as $values2)
echo "<br>IIIВысота ПК $values составляет:$values2"; // Вывод результатов из массива
вот здесь цикл в цикле.
Десять по десять дает сто.


А меж тем:
 foreach ($HPK_after_curve['PK'] as $key => $values) // Вывод результатов из массива
echo "<br>IIIВысота ПК $values составляет:" . $HPK_after_curve['HPK'][$key];

Спустя 1 час, 6 минут, 35 секунд (13.03.2011 - 15:54) SnowWind написал(а):
Сработало smile.gif
Блин но я не понимаю, что и почему и как, сама суть что тут написано не понятна sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.