كيف يمكن إزالة قيمة يحتوي على مفتاح فارغة من مجموعة النقابي في PHP؟

StackOverflow https://stackoverflow.com/questions/243132

  •  04-07-2019
  •  | 
  •  

سؤال

ولدي المفتاح الذي يبدو أن سلسلة فارغة، ولكن باستخدام unset($array[""]); لا يزيل الزوج مفتاح / قيمة. أنا لا أرى وظيفة أخرى أن يفعل ما أريد، لذلك أنا التخمين انها أكثر تعقيدا أن مجرد استدعاء دالة.

والخط للعنصر على print_r هو [] => 1، مما يشير لي أن المفتاح هو سلسلة فارغة.

وعن طريق var_export، يتم سرد عنصر كما '' => 1.

وعن طريق var_dump، يتم سرد عنصر كما [""]=>int(1).

وحتى الآن، لقد حاولت كل الطرق المقترحة لإزالة، ولكن أيا منها لم إزالة هذا العنصر. لقد حاولت unset($array[""]);، unset($array['']);، وunset($array[null]); مع أي حظ.

هل كانت مفيدة؟

المحلول

وحاول unset($array[null]);

إذا لم يفلح ذلك، طباعة مجموعة عبر var_export أو var_dump بدلا من print_r، لأن هذا يسمح لك أن ترى نوع من المفتاح. استخدام var_export لرؤية البيانات في تركيب PHP.

وvar_export($array);

لاحظ أن var_export لا يعمل مع هياكل متكررة.

نصائح أخرى

وحاول:

$someList = Array('A' => 'Foo', 'B' => 'Bar', '' => 'Bah');
print_r($someList);
echo '<br/>';
unset($someList['A']);
print_r($someList);
echo '<br/>';
unset($someList['']);
print_r($someList);
echo '<br/>';

وحصلت على:

Array ( [A] => Foo [B] => Bar [] => Bah )
Array ( [B] => Bar [] => Bah )
Array ( [B] => Bar )

ويجب تحليل حيث المفتاح تأتي من، جدا ...

وتخميني هو أنها ليست سلسلة فارغة. محاولة ما يلي لمعرفة ما تحصل عليه:

foreach ($array as $index => $value) {
    echo $index;
    echo ' is ';
    echo gettype($index);
    echo "\n";
}

وحاول استخدام var_dump بدلا من print_r. هذا قد تعطيك فكرة أفضل عن بالضبط ما هو مفتاح.

ولست متأكدا ما ان اقول لكم. تشغيل هذا البرنامج النصي

<?php

$arr = array(
        false   => 1
    ,   true    => 2
    ,   null    => 3
    ,   'test'  => 4
//  ,   ''      => 5
);

print_r( $arr );

foreach ( $arr as $key => $value )
{
    var_dump( $key );
}

unset( $arr[''] );

print_r( $arr );

وأحصل على الإخراج التالي

Array
(
    [0] => 1
    [1] => 2
    [] => 3
    [test] => 4
)
int(0)
int(1)
string(0) ""
string(4) "test"
Array
(
    [0] => 1
    [1] => 2
    [test] => 4
)

وانظر كيف أن "لاغيا" مفتاح مجموعة كان نوع تحويلها إلى سلسلة فارغة؟

هل أنت متأكد أنك لا تعمل مع نسخة من مجموعة؟ إذا فعلت هذه الدعوة إلى إلغاء تعيين () من داخل دالة، فمن الممكن أن تكون.

ولقد تم اختبار هذا على PHP 5.2.0

يرجى الرد على الشفرة التي تستخدم لإزالة عنصر فضلا كود المدقق قبل وبعد هذا الخط.

وماذا أنا أبحث عن شيء مثل هذا:

var_export($array);
echo "\n";
unset($array[""]);
var_export($array);

يرجى الرد أيضا إخراج كاملة من كلا الخطين var_export.

وأنا أبحث عن شيء مثل هذا:

array (
  '' => 1,
)
array (
)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top