سؤال

وكيف يمكنك أن تفعل هذا؟ قانون بلدي ينظر هنا لا تعمل

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
هل كانت مفيدة؟

المحلول

وهذا يجب أن تعمل. لماذا لا تعمل؟ اي رسالة خطأ ظهرت لك؟ هذا هو رمز وأود أن استخدام:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}

نصائح أخرى

ويمكن أن تكون بسيطة مثل هذا:

$array = array_map('reset', $array);

ويمكن أن تكون هناك مشاكل إذا كان الصفيف المصدر غير مؤشر عدديا. جرب هذا بدلا من ذلك:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}
// Make sure you have your first array initialised here!
$array2 = array();
foreach ($array AS $item)
{
    $array2[] = $item[0];
}

وعلى افتراض انك تريد أن يكون لها نفس اسم المتغير بعد ذلك، يمكنك إعادة تعيين، مجموعة جديدة إلى القديم.

$array = $array2;
unset($array2); // Not needed, but helps with keeping memory down

وبالإضافة إلى ذلك، قد تكون قادرا على، تعتمد على ما هو موجود في مجموعة، لا شيء من هذا القبيل.

$array = array_merge(array_values($array));

وكما ذكر سابقا، التعليمات البرمجية لن تعمل بشكل صحيح في الوضع مختلف. محاولة تهيئة مجموعة الخاصة بك مع هذه القيم:

$cond = array(5=>array('4','3'),9=>array('3','4'));

وهناك حل، بالنسبة لي أفضل قراءتها أيضا هو رمز التالية:

//explain what to do to every single line of the 2d array
function reduceRowToFirstItem($x) { return $x[0]; }

// apply the trasnformation to the array
$a=array_map('reduceRowTofirstItem',$cond);

ويمكنك قراءة إشارة لخريطة مجموعة للحصول على شرح دقيق.

ويمكنك أيضا اختيار لاختلاف طفيف باستخدام array_walk (انها تعمل على مجموعة "في المكان"). لاحظ أن الدالة لا يرجع قيمة والتي يتم تمريرها المعلمة له بالرجوع.

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
scroll top