आप एक विशिष्ट स्थान पर एक सरणी से एक आइटम निकालना चाहते हैं, तो आप उस स्थिति के लिए कुंजी प्राप्त करें और फिर सेट किए बिना यह कर सकते हैं:
$b = array(123,456,789,123);
$p = 2;
$a = array_keys($b);
if ($p < 0 || $p >= count($a))
{
throw new RuntimeException(sprintf('Position %d does not exists.', $p));
}
$k = $a[$p-1];
unset($b[$k]);
यह किसी भी PHP सरणी के साथ काम करता है, भले ही जहां अनुक्रमण शुरू होता है या तारों के लिए स्ट्रिंग का उपयोग किया जाता है।
आप शेष सरणी अंकित करना चाहते हैं तो बस array_values
का उपयोग करें:
$b = array_values($b);
जो तुम एक शून्य आधारित, संख्यानुसार अनुक्रमित सरणी दे देंगे।
मूल सरणी के रूप में अच्छी तरह से एक शून्य आधारित, संख्यानुसार अनुक्रमित सरणी है (अपने प्रश्न के रूप में) हैं, तो आप कुंजी प्राप्त करने के बारे में हिस्सा छोड़ सकते हैं:
$b = array(123,456,789,123);
$p = 2;
if ($p < 0 || $p >= count($b))
{
throw new RuntimeException(sprintf('Position %d does not exists.', $p));
}
unset($b[$p-1]);
$b = array_values($b);
या सीधे array_splice
जो के साथ सौदों का उपयोग कुंजी और फिर से अनुक्रमित सरणी के बजाय ऑफसेट (इनपुट में संख्यात्मक कुंजियों संरक्षित कर रहे हैं नहीं):
$b = array(123,456,789,123);
$p = 2;
if ($p < 0 || $p >= count($b))
{
throw new RuntimeException(sprintf('Position %d does not exists.', $p));
}
array_splice($b, $p-1, 1);
[कुंजी द्वारा सरणी से लाइन को हटाने] के संभावित डुप्लिकेट (http: // stackoverflow .com/प्रश्न/1782041/निकालें-लाइन-से-सर-बाय-की) – hakre