我在處理數組時遇到問題。如果我訪問一個不存在的數組的索引,PHP會拋出一個錯誤,並且對於每個索引都會遇到困難。有什麼辦法可以爲數組的每個索引設置默認值,所以即使我訪問一個不存在的數組索引,然後它會返回默認設置值?PHP - 如何設置數組的每個索引的默認值
0
A
回答
1
你這樣做不是想爲數組的每個索引設置一個默認值,除非你的數組真的很小。這將浪費處理和記憶。
你可以這樣做:
if (isset($array[$index])) {
$var = $array[$index]; // the index exists
} else {
$var = 'default value'; // the index does not exist
}
// now so something with $var
0
「面向對象」的方法:
你可以創建自己的ArrayAccess
實現,它返回一個默認值(null
爲例),如果關鍵你正在尋找不存在。最簡單的方法是擴大現有ArrayObject
類:
class MyArray extends ArrayObject {
public function offsetGet($offset) {
if(!$this->offsetExists($offset)) {
return null; // or some default value
}
return parent::offsetGet($offset);
}
}
然後用這個來代替array()
:
$arr = new MyArray();
$arr['y'] = "I'm ok";
echo $arr['x']; // not set, default value (null) is returned.
echo $arr['y']; // prints "I'm ok"
程序方法:
你可以定義一個方法,該方法安全從您的陣列中獲得價值:
function safeGet($array, $key, $default = null){
if(!is_array($array) && !$array instanceof ArrayAccess){
throw new InvalidArgumentException('$array must be an array');
}
return isset($array[$key]) ? $array[$key] : $default;
}
然後簡單地訪問使用這種方法你的價值觀:
$arr = array();
$arr['z'] = "I'm ok";
echo safeGet($arr, 'x'); // tries to access $arr['x']. prints null by default.
echo safeGet($arr, 'y', 'default'); // tries to access $arr['y']. prints 'default'.
echo safeGet($arr, 'z'); // key exists, prints "I'm ok".
相關問題
- 1. 如何設置默認索引index.html
- 2. 如何將php數組索引設置爲數組值...?
- 3. 如何設置數組索引在PHP
- 4. 如何設置數組索引值
- 5. 具有默認值的PHP數組不存在索引
- 6. 如何爲php索引文件設置web.config默認頁面
- 7. PHP - 如何通過值取消設置數組索引的索引
- 8. 如何將PHP函數的參數設置爲默認值
- 9. 如何設置Datepicker默認索引是字符串值
- 10. 如何設置maven數組參數的默認值?
- 11. 如何設置默認值
- 12. 如何設置默認值?
- 13. 設置索引索引數組時的Numpy數組值
- 14. 如何設置默認的kendoui網格索引順序
- 15. 每個數組索引的JAVA設置鍵
- 16. 如何設置一個默認值MvxSpinner
- 17. 如何將數組設置爲像definited一樣的默認值?
- 18. 如何設置默認的數組屬性值
- 19. 如何設置默認的PHP頭()
- 20. 設置INSERT語句的默認值PHP
- 21. 組合框的默認值(設置ONCE)
- 22. 設置組合框的默認值
- 23. OpenERP 7:設置分組的默認值
- 24. 設置組合框的默認值
- 25. 設置默認值
- 26. PHP - 從索引數組的值導出的關聯數組的每個值
- 27. 設置索引默認主頁angularjs
- 28. Openerp - 如何設置fields.binary的默認值?
- 29. 如何設置@RequestMapping的默認值?
- 30. 如何設置md-select的默認值?
發佈您的代碼:) –
定義一個函數來訪問你的陣列,像這樣: '函數訪問($數組$鍵){回報isset( $ array [$ key])? $ array [$ key]:'默認值'; }''而只是使用'access($ array,'key')'而不是'$ array ['key']' – t3chguy
這是PHP中的其中一件事。您需要習慣於檢查是否存在可能會丟失的密鑰,因爲如果沒有發出E_NOTICE,則沒有可避免的語法 –