В обшем имеем массив вида [key]=>value например [0]=>1,[2]=>2,[3]=>3,[4]=>4,[6]=>5,[12]=>6,[13]=>7,[22]=>8...Какой самый НЕ ресурсоемкий способ сделать из этого массива, массив [0]=>1,[1]=>2,[2]=>3,[3]=>4,[4]=>5,[5]=>6,[6]=>7,[7]=>8
Всем привет. Подскажите пожалуйста, есть ли более просто способ изменить в массиве определенное имя ключа? Массив такой: PHP: <? $array = array($_POST["ed_poll"] => array( "songs" => $_POST["names"], "links" => $_POST["links"], "votes" => array( "emotion" => array_fill(0, sizeof($_POST["names"]), '0'), "quality" => array_fill(0, sizeof($_POST["names"]), '0'), "audience" => array_fill(0, sizeof($_POST["names"]), '0')), "people" => array_fill(0, sizeof($_POST["names"]), '0'))); ?> PHP: <? $keys = array_keys(array); $values = array_values(array); $search_key = array_search($_POST["ed_poll"], $keys); // $_POST["ed_poll"] - ключ, который надо заменить// $keys[$search_key] = $_POST["ed_poll_name"]; // $_POST["ed_poll_name"] - новый ключ // $create_array = array_combine($keys, $values); ?> :roll:
Demon Что-то у вас тут очень много лишнего... Это ж не С, чтобы memset делать PHP: <?php $array['newkey'] = $a['oldkey']; unset($a['oldkey']); ?>
PHP: <? echo '<form action="#" method="post">'; $array = array( "First" => array("songs" => array(0 => "one"), "links" => array(0 => "one", 1 => "two", 2 => "three", 3 => "four")), "Second" => array("songs" => array(0 => "one"), "links" => array(0 => "one", 1 => "two", 2 => "three", 3 => "four")), "Third" => array("songs" => array(0 => "one"), "links" => array(0 => "one", 1 => "two", 2 => "three", 3 => "four")) ); echo '<input type="text" name="ed_poll" /><input type="submit" name="edit" value="Edit">'; if($_POST["ed_poll"]) { $_POST["ed_poll"] = $array["First"]; unset($array["First"]); } echo "<br />"; print_r($_POST["ed_poll"]); echo "<br />"; print_r($array); echo '</form>'; ?>
eduha: Пасиб, работает. To all: подскажите пожалуйста, как произвести опрерацию деления для определенных ключей массива? Есть два массива: PHP: <? $first = array( 0 => "1", 1 => "0", 2 => "3", 3 => "1", 4 => "0", 5 => "0"); $second = array( 0 => "5", 1 => "0", 2 => "7", 3 => "5", 4 => "0", 5 => "0"); ?> Нужно разделить значение ключей первого массива, на значение ключей второго массива, обходя ключи с нулем. Циклы не годяться, т.к выдается ошибка. Подскажите наиболее простой вариант пожалуйста.
Нужно деление ключей? Или значений? Если значений, то PHP: <?php for ($i=0; isset($arr1[$i]) && isset($arr2[$i]); $i++) $arr3[$i] = ($arr2[$i]>0)?$arr1[$i]/$arr2[$i]:0; ?> Если ключей, то PHP: <?php if (reset($arr1) !== false && reset($arr2) !== false) { for ($i=0;;$i++) { $arr3[$i] = (key($arr2) > 0)?key($arr1)/key($arr2):0; if (next($arr1) === false || next($arr2) === false) break; } } ?>
Есть два массива, оба с целыми числами, значения каждого меняются с определенным шагом. После объединения ключ нового начинается с 0, а нужно с 1. Как добиться?
AlexGousev: Пасиб, то что нужно. safrash: Например так... PHP: <? $first = array(0 => "1", 1 => "2", 2 => "3", 3 => "4"); $second = array(4 => "5", 5 => "6", 6 => "7", 7 => "8"); $merge = $first + $second; $combine = array_combine(array_keys(array_fill(1, sizeof($merge), '0')), array_values($merge)); print_r($combine); ?>