PDA

View Full Version : سوال: جا به جایی بعد های آرایه



armsoftpc
جمعه 24 خرداد 1392, 19:44 عصر
با سلام
چطور میشه،(شمای) آرایه زیر را:

Array
(
[1] => Array
(
[akefi] => 17
[t] => 15
[d] => 16
[atraki] => 14.5
)

[2] => Array
(
[akefi] => 16
[t] => 17
[d] => 20
[atraki] => 15.75
)

[4] => Array
(
[akefi] => 13
[t] => 14
[d] => 15
[atraki] => 16
)

)


به:

Array
(
[akefi]=>Array
(
[1]=>17
[2]=>16
[4]=>13
)

[t]=>Array
(
[1]=>15
[2]=>17
[4]=>14
)

[d]=>Array
(
[1]=>16
[2]=>20
[4]=>15
)

[atraki]=>Array
(
[1]=>14.5
[2]=>15.75
[4]=>16
)
)
تبدیل کرد.
با تشکر.:چشمک:

armsoftpc
جمعه 24 خرداد 1392, 20:06 عصر
دوستان راه حلی به ذهنشون نرسید؟!:لبخندساده:

MMSHFE
جمعه 24 خرداد 1392, 20:27 عصر
این کد رو تست کنید:


<?php
function ChangeArrayDim($array) {
$result = array();
$keys = array_keys($array);
$subkeys = array();
foreach($keys as $key) {
$subkeys[] = array_keys($array[$key]);
}
$subkeys = array_unique($subkeys);
foreach($subkeys as $subkey) {
foreach($keys as $key) {
if(isset($array[$key][$subkey])) {
$result[$subkey][$key] = $array[$key][$subkey];
}
}
}
return $result;
}
?>

armsoftpc
جمعه 24 خرداد 1392, 20:44 عصر
ممنون از پاسختون، اما 3 بار ارور
Warning: Illegal offset type in isset or empty
رو میده.

MMSHFE
شنبه 25 خرداد 1392, 00:41 صبح
این کد رو تست کنید:


function ChangeArrayDim($array) {
$result = array();
$keys = array_keys($array);
$subkeys = array();
foreach($keys as $key) {
foreach(array_keys($array[$key]) as $subkey) {
$subkeys[] = $subkey;
}
}
$subkeys = array_unique($subkeys);
foreach($subkeys as $subkey) {
foreach($keys as $key) {
if(isset($array[$key][$subkey])) {
$result[$subkey][$key] = $array[$key][$subkey];
}
}
}
return $result;
}

plague
شنبه 25 خرداد 1392, 02:21 صبح
اگه بخای ماست مالیش کنی که دقیقا روی همین آرایه نمونه جواب بده اینم فکر میکنم جواب بده


$new_array = array();
foreach($original_arr as $a )
foreach($a as $k=>$v)
{
$count = isset($new_array[$k]) ? count($new_array[$k]) : 0 ;
$key = $count <2 ? $count+1 : 4 ;
$new_array[$k][$key] = $v;
}


اگه کلید 1و 2و 4 تغییر کنه باید خط یکی مونده به آخر هم تغییر کنه تا الگوی درست رو تولید کنه

armsoftpc
دوشنبه 27 خرداد 1392, 17:01 عصر
سلام، ممنون. اما قبل از این کدهاتون رو ببینم، همون شبش به جواب رسیدم:

$src = array();$le_ids = array();

for($i=0; $i<sizeof($rows); $i++)
{
$p = json_decode($rows[$i]["student_info"], true);
$src[$rows[$i]["klesson_id"]] = $p;

$uns = array_keys($p);

$le_ids[$rows[$i]["lesson_id"]] = $rows[$i]["zarib"]; // لیست درس ها
}

$data = array();
foreach($uns as $nbc)
{
$dt = array();
foreach ($src as $klesson_id => &$value)
$dt[$klesson_id] = $value[$nbc];

$data[$nbc] = $dt;
}