|
|
|
| есть два массива вида
1. старая цена
[артикул1]=[5 р]
[артикул3]=[2 р]
2. новая цена
[артикул2]=[1 р]
[артикул1]=[4 р]
|
надо получить массив вида (новая цена)
может есть готовые решения? функции? | |
|
|
|
|
|
|
|
для: Alph[p]a
(24.11.2010 в 16:31)
| |
array_intersect_key($array_2,$array_1)
|
| |
|
|
|
|
|
|
|
для: Alph[p]a
(24.11.2010 в 16:31)
| | array_merge (старая цена, новая цена); | |
|
|
|
|
|
|
|
для: Лена
(24.11.2010 в 17:11)
| | получится
[артикул1]=[5 р]
[артикул2]=[1 р]
[артикул3]=[2 р]
|
не совсем то | |
|
|
|
|
|
|
|
для: Суррогат
(24.11.2010 в 17:17)
| | Получится то, но только в том случае, если ключи будут строками, что с артикулом совсем не обязательно может быть. | |
|
|
|
|
|
|
|
для: sim5
(24.11.2010 в 17:25)
| | все не то, ниче не помагает.
мой код, как формирую массив, но незнаю как сравнить.
$fh=fopen('24.csv', "r");
while (list($kod,$price) = fgetcsv($fh, 1024)) {
$current[$kod]=$price;
}
fclose ($fh);
unset ($name);
unset ($kod);
$fh=fopen('export.csv', "r");
while (list($kod,$price) = fgetcsv($fh, 1024,';')) {
$export[$kod]=$price;
}
fclose ($fh);
unset ($name);
unset ($kod);
|
Нужна помощь! | |
|
|
|
|
|
|
|
для: Alph[p]a
(25.11.2010 в 08:13)
| | 1. Вам подсказали. Что не устраивает?
2. При чем здесь сравнение? | |
|
|
|
|
|
|
|
для: Trianon
(25.11.2010 в 09:04)
| | ну не эти функции. они не делают то что нужно. на выходе у них муть.
мне надо пройти по массиву и если если значение разные то заменить на новое | |
|
|
|
|
|
|
|
для: Alph[p]a
(25.11.2010 в 09:41)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Trianon
(25.11.2010 в 09:45)
| | муть есть.. не спорю. конечно лучше кодом помогать чем "лирическими" отступлениями | |
|
|
|
|
автор: Trianon // (25.11.2010 в 10:45) |
|
|
для: Alph[p]a
(25.11.2010 в 10:36)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Trianon //
(25.11.2010 в 10:45)
| | в том и проблема... не столь и сложная задача... но вызывает ступор второй день...
написал много хрени... вот последняя
<?php
for($i = 0; $i<sizeof($export); $i++)
{
// Текущий элемент
$exportVal = current($export);
$curVal=current($current);
// проходим по массиву сайта
for($k = 0; $k<sizeof($current); $k++) {
// если артикул совпадает
if (key($current)==key($export)) {
if (current($current)!==current($export)) {
echo key($current).' знач. '.$curVal.' / '.key($export).' знач. '.$exportVal.' Надо обновить<BR/>';
$new[key($current)]=$exportVal;
}
break;
}
else next($current);
}
// Следующий
next($export);
next($current);
}
?>
|
| |
|
|
|
|
|
|
|
для: Alph[p]a
(25.11.2010 в 11:00)
| | Хрени действительно много, если учесть, что у вас два массива, один со старой ценой другой с новой. | |
|
|
|
|
|
|
|
для: sim5
(25.11.2010 в 11:02)
| | вот и проблема ... незнаю как сделать если артикул одинаковый но цены разные заменить на новый.... | |
|
|
|
|
|
|
|
для: Alph[p]a
(25.11.2010 в 11:04)
| | Вам об этом вторым постом уже ответили, как. | |
|
|
|
|
|
|
|
для: sim5
(25.11.2010 в 11:20)
| | впринципе работает.. но было бы СОВСЕМ не лишним показывать только те позиции цена у которых изменилась а не все. | |
|
|
|
|
|
|
|
для: Alph[p]a
(25.11.2010 в 11:38)
| | Открываете мануал, заходите в раздел функций работы с массивами, и изучаете функции персечения массивов. Это как роз то, что вам и нужно, это именно те функции, которые позволят вам пулучить необходимое. Все. Не тратьте время на лишние вопросы, изучайте. | |
|
|
|
|
|
|
|
для: sim5
(24.11.2010 в 17:25)
| | как это? | |
|
|
|
|
|
|
|
для: Trianon
(25.11.2010 в 09:02)
| | Да очень просто ) Если ключи массива, это строки, то будет замещаться значание ключа, если ключ это число, то добавление:
<?
$a1 = array('12345'=>25,'23456'=>34);
$a2 = array('12345'=>77,'23456'=>84);
print_r(array_merge($a1,$a2)); //Array ( [0] => 25 [1] => 34 [2] => 77 [3] => 84 )
$a1 = array('a12345'=>25,'b23456'=>34);
$a2 = array('a12345'=>77,'b23456'=>84);
print_r(array_merge($a1,$a2)); //Array ( [a12345] => 77 [b23456] => 84 )
|
| |
|
|
|
|
|
|
|
для: sim5
(25.11.2010 в 09:57)
| | >Да очень просто )
Откуда возникнут разные типы, если данные взяты из одного источника?
Что руками можно всё попортить, я знаю и без того. Для этого вообще большого ума не требуется. | |
|
|
|
|
|
|
|
для: Trianon
(25.11.2010 в 10:03)
| | Причем тут типы? Они и будут одинаковы, коли они от одного источника. Но если артикул строка, значит получится, если нет, значит нет. | |
|
|
|
|
|
|
|
для: sim5
(25.11.2010 в 10:04)
| | да, пардон.
Верхний пример рвет моск.
Интересно, они там какой частью тела думали...
показательно:
<?php
$a1 = array(' 12345'=>25,'23456'=>34);
$a2 = array(' 12345'=>77,'23456'=>84);
print_r(array_merge($a1,$a2));
|
Array ( [ 12345] => 77 [0] => 34 [1] => 84 )
|
| |
|
|
|
|
|
|
|
для: Trianon
(25.11.2010 в 10:08)
| | Они, это кто, разработчики?) Не знаю чем думали, но array_merge работает так.
PS. ' 12345' - такого нельзя допущать ;-) | |
|
|
|
|
автор: Trianon // (25.11.2010 в 10:44) |
|
|
для: sim5
(25.11.2010 в 10:17)
| | >PS. ' 12345' - такого нельзя допущать ;-)
Наоборот, похоже, подобного рода грязный хак и нужено использовать в заявленных тредстартером целях | |
|
|
|