App下載

PHP 數(shù)組長(zhǎng)度教程 - 如何獲取數(shù)組大小

喬納森·博森格 2021-08-30 09:27:07 瀏覽數(shù) (4170)
反饋

數(shù)組是 PHP 中一種強(qiáng)大的數(shù)據(jù)類型。知道如何獲取數(shù)組的大小是一項(xiàng)有用的技能。在本文中,我將快速概述數(shù)組的工作原理,然后我將深入研究如何獲取 PHP 數(shù)組的大小。如果您已經(jīng)知道什么是數(shù)組,則可以直接跳到如何獲取數(shù)組大小部分。

PHP 中的數(shù)組是什么?

在我們深入了解數(shù)組大小之前,我們需要確保我們了解數(shù)組是什么。PHP 中的數(shù)組是一種允許存儲(chǔ)多個(gè)數(shù)據(jù)的變量類型。

例如,如果您要存儲(chǔ)一個(gè)簡(jiǎn)單的字符串,您將使用 PHP 字符串類型:

$heading = 'PHP Array Length Tutorial';

但是,如果您想存儲(chǔ)更多的單獨(dú)數(shù)據(jù),您可以考慮使用幾個(gè)字符串變量。

$heading = 'PHP Array Length Tutorial';
$subheading = 'How to get an array size';
$author = 'Jonathan Bossenger'

這一切都很好,但是如果您需要存儲(chǔ)更多數(shù)據(jù),并快速調(diào)用代碼中其他地方的任何項(xiàng)目,該怎么辦?這就是數(shù)組派上用場(chǎng)的地方。您仍然可以存儲(chǔ)單個(gè)數(shù)據(jù),但使用單個(gè)變量。

$post_data = array(
    'PHP Array Length Tutorial',
    'How to get an array size',
    'Jonathan Bossenger'
);

該數(shù)組中的每個(gè)項(xiàng)目都可以通過(guò)其數(shù)字鍵引用。因此,無(wú)需調(diào)用單個(gè)變量,您可以通過(guò)其數(shù)字鍵引用單個(gè)數(shù)組項(xiàng)。

echo $post_data[0];
在 PHP 中,數(shù)組鍵從 0 開(kāi)始

為了獲得更多控制,數(shù)組還允許您使用字符串定義自己的數(shù)組鍵。

$post_data = array(
    'heading' => 'PHP Array Length Tutorial',
    'subheading' => 'How to get an array size',
    'author' => 'Jonathan Bossenger'
);

這允許您還通過(guò)其字符串鍵引用數(shù)組項(xiàng)。

echo $post_data['heading'];

您還可以使用類似于 JavaScript 的新短數(shù)組表示法定義數(shù)組:

$post_data = [
    'heading' => 'PHP Array Length Tutorial',
    'subheading' => 'How to get an array size',
    'author' => 'Jonathan Bossenger'
];

數(shù)組也可以嵌套,形成更復(fù)雜的數(shù)組變量:

$post_data = [
    'heading' => 'PHP Array Length Tutorial',
    'subheading' => 'How to get an array size',
    'author' => [
        'name' => 'Jonathan Bossenger',
        'twitter' => 'jon_bossenger',
    ]
];

而且,您可以使用其嵌套鍵調(diào)用特定的數(shù)組值:

echo $post_data['author']['name'];

但是,如果您發(fā)現(xiàn)自己經(jīng)常這樣做,您可能需要考慮使用對(duì)象而不是數(shù)組。

如果您需要快速收集并在一個(gè)函數(shù)中使用不同的相關(guān)數(shù)據(jù),或者將這些數(shù)據(jù)傳遞給另一個(gè)函數(shù),則數(shù)組很有用。

通過(guò)將這些數(shù)據(jù)放入數(shù)組中,您定義的變量更少,并且可以使您的代碼在以后更易于閱讀和理解。將單個(gè)數(shù)組變量傳遞給另一個(gè)函數(shù)也比傳遞多個(gè)字符串容易得多。

$post_data = [
    'heading' => 'PHP Array Length Tutorial',
    'subheading' => 'How to get an array size',
    'author' => [
        'name' => 'Jonathan Bossenger',
        'twitter' => 'jon_bossenger',
    ]
];

$filtered_post_data = filter_post_data($post_data)

如何在 PHP 中獲取數(shù)組的大小

通常,當(dāng)我們談?wù)摂?shù)組的大小時(shí),我們談?wù)摰氖窃摂?shù)組中存在多少個(gè)元素。有兩種常用的方法來(lái)獲取數(shù)組的大小。

最流行的方法是使用 PHP count()函數(shù)。正如函數(shù)名稱所說(shuō),count()將返回?cái)?shù)組元素的計(jì)數(shù)。但是我們?nèi)绾问褂胏ount()函數(shù)取決于數(shù)組結(jié)構(gòu)。

讓我們看看我們之前定義的兩個(gè)示例數(shù)組。

$post_data = array(
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => 'Jonathan Bossenger'
);

echo count($post_data);

在本例中,count($post_data)結(jié)果為 3。這是因?yàn)樵摂?shù)組中有 3 個(gè)元素:'heading'、'subheading' 和 'author'。但是我們的第二個(gè)嵌套數(shù)組示例呢?

$post_data = [
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => [
		'name' => 'Jonathan Bossenger',
		'twitter' => 'jon_bossenger',
	]
];
echo count($post_data);

信不信由你,在這個(gè)例子中,count($post_data)也將返回 3。這是因?yàn)槟J(rèn)情況下,該count()函數(shù)只計(jì)算頂級(jí)數(shù)組元素。

如果你看一下函數(shù)定義,你會(huì)發(fā)現(xiàn)它接受兩個(gè)參數(shù)——要計(jì)算的數(shù)組和一個(gè)mode整數(shù)。該模式的默認(rèn)值是預(yù)定義的常量COUNT_NORMAL,它告訴函數(shù)只計(jì)算頂級(jí)數(shù)組元素。

如果我們COUNT_RECURSIVE改為傳遞預(yù)定義的常量,它將運(yùn)行所有級(jí)別的嵌套,并對(duì)其進(jìn)行計(jì)數(shù)。

$post_data = [
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => [
		'name' => 'Jonathan Bossenger',
		'twitter' => 'jon_bossenger',
	]
];
echo count($post_data, COUNT_RECURSIVE);

現(xiàn)在,count($post_data, COUNT_RECURSIVE)正如預(yù)期的那樣,結(jié)果將是 5。

“但是等等!”,我聽(tīng)到你哭了。“你提到有另一種方式?”。

是的,您可以使用的另一個(gè)函數(shù)是sizeof()。然而,sizeof()只是 的別名count(),許多人認(rèn)為(正確地如此)sizeof()將返回?cái)?shù)組的內(nèi)存使用情況。

因此最好堅(jiān)持使用count(),這是一個(gè)更適合您正在做的事情的名稱 - 計(jì)算數(shù)組中的元素。

謝謝閱讀!我希望您現(xiàn)在對(duì)如何在 PHP 中查找數(shù)組的大小有了更好的了解。


PHP

0 人點(diǎn)贊