This is because you're not hashing the same thing, in PHP you're turning it into a string with implode. For example, if you also turn it into a string in c# you get the same result as in php:
using System;
using System.Security.Cryptography;
using System.Text;
public class Program
{
public static void Main()
{
using (SHA256 sha256Hash = SHA256.Create())
{
string str = "1024116121215228157201927";
byte[] hashedBytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(str));
for (int i = 0; i < hashedBytes.Length; i++)
{
Console.Write(hashedBytes[i].ToString("x2"));
}
}
}
}
And
<?php
$arr = array(10,241,161,2,121,5,228,157,20,19,2,7);
$original = implode("", $arr);
echo(hash('sha256', $original));
?>
Both give
6d615f5fd3e0a50c05520bccdb048f6fa4e2ae90788bda2379364d6cd1dcc707