我在php中有這個數字多維數組。這是Playfair矩陣,我想從矩陣中得到一個字母的鍵。數字多維數組php
比方說,我有字母「P」,它在第三行(0到4)和第二列(0到4)。我已經嘗試了幾件事array_keys(不按我想要的那樣工作),函數來獲取數組第一級的關鍵,使數組變成一維並做一些魔術技巧......沒有任何工作,我想要一些幫助。
這是獲得第一級的按鍵功能:
function array_search2($needle, $haystack){
$l = count($haystack);
for ($i=0; $i < $l; $i++) {
if (in_array($needle, $haystack[$i])) return $i;
}
return false;
}
我想有這個數組的信件,從中獲得的兩封信,讓這兩個字母的座標(從PLayfair矩陣)並編譯它們的行/列。 謝謝,我會發布任何需要的代碼。
編輯:我張貼我的一切:
$keyword = str_replace(' ','', $_POST['keyword']);
$plaintext = str_replace(' ','', $_POST['plaintext']);
$key = str_split($keyword); //string to array
$plain = str_split($plaintext); //string to array
$alphabet = array(
0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e', 5 => 'f',
6 => 'g', 7=> 'h', 8 => 'i', 9 => 'j', 10 => 'k', 11 => 'l',
12 => 'm', 13 => 'n', 14 => 'o', 15 => 'p', 16 => 'q', 17 => 'r',
18 => 's', 19 => 't', 20 => 'u', 21 => 'v', 22 => 'w', 23 => 'x',
24 => 'y');
for ($i=0; $i < count($key); $i++) {
for ($j=0; $j < count($alphabet) ; $j++) {
if ($keyword[$i] == $alphabet[$j]) {
unset($alphabet[$j]);
}
}
}
$keywordFilpped = array_flip($key);
$alphabetFlipped = array_flip($alphabet);
$mergedFlipped = $keywordFilpped + $alphabetFlipped;
$i = 0;
foreach ($mergedFlipped as $key => $value) {
$mergedFlipped[$key] = $i;
$i++;
}
$merged = array_flip($mergedFlipped);
$index = 0;
for ($i=0; $i < 5; $i++) {
for ($j=0; $j < 5; $j++) {
$matrix[$i][$j] = $merged[$index];
$index++;
}
}
echo "PLAYFAIR MATRIX:<br>";
for ($i=0; $i < 5; $i++) {
for ($j=0; $j < 5; $j++) {
echo $matrix[$i][$j];
}
echo "<br>";
}
你的代碼有單維數組''echo array_search('p',$ alphabet)'..這個應該可以工作 –
是的,它應該可以工作,如果我想從$字母搜索,但我想搜索$矩陣。因此,我應該得到兩個鍵(例如$ i,$ j)。 –
也不需要指定數字索引,php會自動做到這一點。 –