函式名稱:FFI::memcmp()
適用版本:PHP 7.4及更高版本
用法: FFI::memcmp()函式用於比較兩個記憶體塊的內容。它接受三個引數:兩個記憶體塊的指標和要比較的位元組數。
語法:
int FFI::memcmp(FFI\CData $ptr1, FFI\CData $ptr2, int $size): int
引數:
$ptr1
:指向第一個記憶體塊的指標。$ptr2
:指向第二個記憶體塊的指標。$size
:要比較的位元組數。
返回值:
- 如果兩個記憶體塊的內容相等,則返回0。
- 如果第一個記憶體塊的內容小於第二個記憶體塊,則返回一個負數。
- 如果第一個記憶體塊的內容大於第二個記憶體塊,則返回一個正數。
示例:
$ffi = FFI::cdef("
int memcmp(const void *ptr1, const void *ptr2, size_t num);
", "libc.so.6");
$buffer1 = FFI::new("char[100]");
$buffer2 = FFI::new("char[100]");
FFI::memcpy($buffer1, "Hello", 5);
FFI::memcpy($buffer2, "Hello", 5);
$result = $ffi->memcmp($buffer1, $buffer2, 5);
if ($result == 0) {
echo "兩個記憶體塊的內容相等";
} elseif ($result < 0) {
echo "第一個記憶體塊的內容小於第二個記憶體塊";
} else {
echo "第一個記憶體塊的內容大於第二個記憶體塊";
}
在上面的示例中,我們首先定義了一個FFI物件,然後使用cdef()方法定義了一個名為memcmp的C函式。然後,我們建立了兩個char型別的記憶體塊,並使用memcpy()方法將字串"Hello"複製到這兩個記憶體塊中。最後,我們呼叫了memcmp()函式來比較這兩個記憶體塊的內容,並根據返回值輸出相應的結果。