หากคุณต้องการยกเลิกการตั้งค่าตัวแปรคุณสามารถใช้ unset
unset($any_variable);
การตรวจสอบการมีอยู่ของมันไม่มีประโยชน์เมื่อพยายามยกเลิกการตั้งค่าตัวแปร
ถ้าตัวแปรเป็นอาร์เรย์และคุณต้องการที่จะล้างค่าองค์ประกอบที่คุณต้องให้แน่ใจว่าที่ผู้ปกครองมีอยู่ครั้งแรกนี้ไปสำหรับคุณสมบัติของวัตถุมากเกินไป
unset($undefined_array['undefined_element_key']);
unset($undefined_object->undefined_prop_name);
นี้จะแก้ไขได้อย่างง่ายดายโดยการตัดunset
ในif(isset($var)){ ... }
บล็อก
if(isset($undefined_array)){
unset($undefined_array['undefined_element_key']);
}
if(isset($undefined_object)){
unset($undefined_object->undefined_prop_name);
}
เหตุผลที่เราเพียง แต่ตรวจสอบตัวแปร ( ผู้ปกครอง ) เป็นเพียงเพราะเราไม่จำเป็นต้องตรวจสอบทรัพย์สิน / องค์ประกอบและการทำเช่นนั้นจะเป็นจำนวนมากช้าลงเพื่อการเขียนและการคำนวณตามที่มันจะเพิ่มการตรวจสอบเป็นพิเศษ
if(isset($array)){
...
}
if(isset($object)){
...
}
.vs
$object->prop_name = null;
$array['element_key'] = null;
if(isset($array) && array_key_exists('element_key', $array)){
...
}
if(isset($object) && property_exists($object, 'prop_name')){
...
}
if(isset($array) && $array['element_key'])){
...
}
if(isset($object) && $object->prop_name)){
...
}
สิ่งนี้ดำเนินไปโดยไม่พูด แต่สิ่งสำคัญก็คือคุณต้องทราบtype
ตัวแปรเมื่อรับตั้งค่าและยกเลิกการตั้งค่าองค์ประกอบหรือคุณสมบัติ การใช้ไวยากรณ์ผิดจะทำให้เกิดข้อผิดพลาด
มันเหมือนกันเมื่อพยายามที่จะยกเลิกการตั้งค่าของอาร์เรย์หรือวัตถุหลายมิติ คุณต้องแน่ใจว่ามีคีย์ / ชื่อพาเรนต์อยู่
if(isset($variable['undefined_key'])){
unset($variable['undefined_key']['another_undefined_key']);
}
if(isset($variable->undefined_prop)){
unset($variable->undefined_prop->another_undefined_prop);
}
เมื่อจัดการกับวัตถุมีอีกสิ่งหนึ่งที่ต้องคิดและนั่นคือการมองเห็น
เพียงเพราะมีอยู่ไม่ได้หมายความว่าคุณได้รับอนุญาตให้แก้ไข